0
나는 tiff 파일을 가지고 있으며 페이지 수를 얻고 싶습니다. 나는 this 질문을 받았지만, 페이지 수를 얻을 수 없습니다. 오류가 없으며 문제를 디버그하려고했지만 원인을 찾을 수 없습니다..tif 파일의 페이지 수를 얻을 수 없습니다.
import java.io.File;
import java.io.IOException;
import org.apache.commons.io.FileUtils;
import javax.swing.JOptionPane;
import java.io.File;
import java.io.IOException;
import java.awt.Frame;
import java.awt.image.RenderedImage;
import javax.media.jai.widget.ScrollingImagePanel;
import javax.media.jai.NullOpImage;
import javax.media.jai.OpImage;
import com.sun.media.jai.codec.SeekableStream;
import com.sun.media.jai.codec.FileSeekableStream;
import com.sun.media.jai.codec.TIFFDecodeParam;
import com.sun.media.jai.codec.ImageDecoder;
import com.sun.media.jai.codec.ImageCodec;
public class FileSearch {
int sizeOfFile = Integer.parseInt((JOptionPane.showInputDialog(null,"Enter Size: ")));
public void findFiles(File root) throws IOException {
File[] listOfFiles = root.listFiles();
for (int i = 0; i < listOfFiles.length; i++) {
String iName = listOfFiles[i].getName();
if (listOfFiles[i].isFile() && iName.endsWith(".tif")) {
long fileSize = listOfFiles[i].length();
if (fileSize <= (sizeOfFile*1000)) {
File file = new File("\\\\server\\folder1\\TestFiles\\" + listOfFiles[i].getName());
if (file.exists()) {
System.out.println(file.getName() + " already exists");
} else {
File folder = new File("\\\\server\\folder1\\TestFiles\\\\Files by Size\\Files of size " + ((sizeOfFile*1000)/1000) + " KB");
if (!folder.exists()) {
if (folder.mkdir()) {
System.out.println("Folder : " + folder.getAbsolutePath());
}
}
/* Start here */
SeekableStream s = new FileSeekableStream(new File("C:\\Users\\username\\Desktop\\file.tif")); //using this file as test
TIFFDecodeParam param = null;
ImageDecoder dec = ImageCodec.createImageDecoder(".tif", s, param);
System.out.println("Number of images in this TIFF: " +
dec.getNumPages());
JOptionPane.showMessageDialog(null, dec.getNumPages());
/* END HERE */
try{
System.out.println(listOfFiles[i].getName() + " | " + FileUtils.byteCountToDisplaySize(fileSize));
FileUtils.copyFileToDirectory(listOfFiles[i], folder);
}
catch(IOException e){
System.out.println("Same files");
return;
}
}
}
}
else if (listOfFiles[i].isDirectory()) {
findFiles(listOfFiles[i]);
}
}
}
}
나는 어떤 다른 결과를 볼 수 ImageDecoder dec = ImageCodec.createImageDecoder(".tif", s, param);
에 ImageDecoder dec = ImageCodec.createImageDecoder("tiff", s, param);
을 변경했습니다. 내 질문에
TO 아래 START 사이
변경? 아무것도? 현지 날짜로 작동합니까? – Zaknafein
@ Zaknafein, 내 게시물에 말한대로 오류가 없습니다. – Maddy
코드가 내 코드와 동일합니다 (광산은 "tiff"가 아닌 ".tif"로 작동 함). 오류 메시지가 없지만 어떤 결과가 나왔는지는 말하지 않았습니다. – Duston