简体   繁体   English

无法获得.tif文件的页数

[英]Unable to get number of page for .tif file

I have tiff files and I want to get the number of pages. 我有tiff文件,我想获取页面数。 I have been followed this question, however I am unable to get the number of pages. 我一直关注这个问题,但是我无法获得页面数。 There are no errors and I have tried to debug the problem but cannot find the cause. 没有错误,我已尝试调试问题,但找不到原因。

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]);
            }
        }
    }
}

I changed ImageDecoder dec = ImageCodec.createImageDecoder("tiff", s, param); 我更改了ImageDecoder dec = ImageCodec.createImageDecoder("tiff", s, param); to ImageDecoder dec = ImageCodec.createImageDecoder(".tif", s, param); ImageDecoder dec = ImageCodec.createImageDecoder(".tif", s, param); to see for any different results. 看看有没有不同的结果。

Answer to my question : 回答我的问题:

Change the below between START TO END section 在“开始到结束”部分之间更改以下内容

RenderedImage renderedImage[], page;
File tiffFile = new File("C:\\Users\\username\\Desktop\\file.tif");

SeekableStream seekableStream = new FileSeekableStream(tiffFile);
ImageDecoder imageDecoder = ImageCodec.createImageDecoder("tiff",seekableStream, null);
renderedImage = new RenderedImage[imageDecoder.getNumPages()];

int tifPageCount = 0;
for (int k = 0; k < imageDecoder.getNumPages(); k++) {
    renderedImage[k] = imageDecoder.decodeAsRenderedImage(k);
    tifPageCount++;
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM