我正在使用 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。我不确定为什么 pg1 的宽度和高度完全由 op1 设置,但可能有一个非常有效的理由。
最佳答案
使用op1。 getAsBufferedImage()
创建 pg1。
关于java - RenderedImage 到 BufferedImage 用于多页 tiff 读取,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7044521/