Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从Tiff获取总页数_Java_Tiff_Icafe - Fatal编程技术网

Java 如何从Tiff获取总页数

Java 如何从Tiff获取总页数,java,tiff,icafe,Java,Tiff,Icafe,我已经开始在我们的项目中创建一个新方法来返回总页面。我们正在使用可从以下URL引用的TIFFTweaker: 在这个类中,我发现了一个方法TIFFTweaker.getPageCount(),它看起来需要一个RandomAccessInputStream对象作为它们的getPageCount() 我一直在玩弄从我的文件对象到他们要找的东西 最好的方法是什么,从tiff返回总页面 我看过一些java文档、stackOverflow和一些random博客,但似乎不知道如何从文件对象到randomac

我已经开始在我们的项目中创建一个新方法来返回总页面。我们正在使用可从以下URL引用的
TIFFTweaker

在这个类中,我发现了一个方法
TIFFTweaker.getPageCount()
,它看起来需要一个
RandomAccessInputStream
对象作为它们的
getPageCount()

我一直在玩弄从我的文件对象到他们要找的东西

最好的方法是什么,从tiff返回总页面

我看过一些java文档、stackOverflow和一些random博客,但似乎不知道如何从文件对象到
randomaccessinputstream

@Override
public Integer totalPages(File file) {

Integer numberOfPages = 0;
try{
      //TIFFTweaker.getPageCount(); - How to pass the file and get the count? Problem is type is a random access input stream and I have a file type

       FileInputStream fileInputStream = new FileInputStream(file);
       String absolutePath = file.getAbsolutePath();

       // return TIFFTweaker.getPageCount();

  }catch(IOException e){
        log.error("Error with Tiff File" + e);
   }

return null;

}
我希望返回一个数值,该数值表示我传递的
TIFF
文件中的总页数。

尝试使用以下代码:

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 MultiPageRead extends Frame {

    ScrollingImagePanel panel;

    public MultiPageRead(String filename) throws IOException {

        setTitle("Multi page TIFF Reader");

        File file = new File(filename);
        SeekableStream s = new FileSeekableStream(file);

        TIFFDecodeParam param = null;

        ImageDecoder dec = ImageCodec.createImageDecoder("tiff", s, param);

        System.out.println("Number of images in this TIFF: " +
                           dec.getNumPages()); //<< use this function to get the number of pages of your TIFF

        // Which of the multiple images in the TIFF file do we want to load
        // 0 refers to the first, 1 to the second and so on.
        int imageToLoad = 0;

        RenderedImage op =
            new NullOpImage(dec.decodeAsRenderedImage(imageToLoad),
                            null,
                            OpImage.OP_IO_BOUND,
                            null);

        // Display the original in a 800x800 scrolling window
        panel = new ScrollingImagePanel(op, 800, 800);
        add(panel);
    }

    public static void main(String [] args) {

        String filename = args[0];

        try {
            MultiPageRead window = new MultiPageRead(filename);
            window.pack();
            window.show();
        } catch (java.io.IOException ioe) {
            System.out.println(ioe);
        }
    }
}
导入java.io.File;
导入java.io.IOException;
导入java.awt.Frame;
导入java.awt.image.renderImage;
导入javax.media.jai.widget.ScrollingImagePanel;
导入javax.media.jai.NullOpImage;
导入javax.media.jai.OpImage;
导入com.sun.media.jai.codec.SeekableStream;
导入com.sun.media.jai.codec.FileSeekableStream;
导入com.sun.media.jai.codec.TIFFDecodeParam;
导入com.sun.media.jai.codec.ImageDecoder;
导入com.sun.media.jai.codec.ImageCodec;
公共类多进制扩展框架{
滚动图像面板;
公共MultiPageRead(字符串文件名)引发IOException{
setTitle(“多页TIFF阅读器”);
文件=新文件(文件名);
SeekableStream s=新文件SeekableStream(文件);
TIFFDecodeParam param=null;
ImageDecoder dec=ImageCodec.createImageDecoder(“tiff”,s,param);
System.out.println(“此TIFF中的图像数:”+

dec.getNumPages());//这是我的工作内容。@roeygol,谢谢你的回答。我曾试图导入依赖项,但在该版本中出现了一些问题。下面是我的想法

    @Override
    public Integer totalPages(File file) {

        try(
            InputStream fis = new FileInputStream(file);
            RandomAccessInputStream randomAccessInputStream = new 
            FileCacheRandomAccessInputStream(fis)
        ){

           return TIFFTweaker.getPageCount(randomAccessInputStream);

       }catch(IOException e){


            log.error("Error with Tiff File" + e);
        }

        return null;

    }

您可以查看测试中的
TIFFTweaker
示例:很高兴看到它能工作!我需要有一天更新Maven。