我正在使用JAI加载多页TIFF图像

File file = workArea[0];
SeekableStream s = new FileSeekableStream(file);

TIFFDecodeParam param = null;

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

//first page
RenderedImage op1 =
    new NullOpImage(dec.decodeAsRenderedImage(0),
                    null,
                    OpImage.OP_IO_BOUND,
                    null);

BufferedImage pg1 = new BufferedImage(op1.getWidth(), op1.getHeight(),
                                      BufferedImage.TYPE_INT_RGB);
pg1.getGraphics().drawImage((Image) op1, 0, 0, null);


但是,在最后一行中,我得到了一个运行时错误:

 Exception in thread "main" java.lang.ClassCastException:
      javax.media.jai.MullOpImage cannot be cast to java.awt.Image


在尝试设置BufferedImage之后,我清除了RenderedImage,因此,如果存在另一种方法,则我不必完全“需要” RenderedImage。

我尝试过:

 pg1.setData(op1.getData());


这给出了ArrayIndexOutOfBoundsException。我不确定为什么op1会精确设置pg1的宽度和高度,但是可能有一个非常合理的理由。

最佳答案

使用op1。getAsBufferedImage()创建pg1。

关于java - RenderedImage到BufferedImage用于多页tiff读取,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19440013/

10-09 18:05