我需要显示扫描的tiff文件的第3页。我用了代码
TIFFReader reader = new TIFFReader(new File(pathOfFile));
RenderedImage image = reader.getPage(2);
它有时会起作用。并显示错误:不支持解码旧式JPEG-in-TIFF数据。 我用过aspriseTIFF.jar
然后我如何解决这个问题。 请回复。 提前谢谢答案 0 :(得分:4)
你遇到的问题是"旧式"您使用的库不支持JPEG compression in the TIFF format(compression == 6
)。
我猜这很常见,因为"旧式"在TIFF中不推荐使用JPEG压缩,因为它从未完全指定过。由于这种规格不足,各种供应商以不同的,不兼容的方式实现了它。支持被删除,有利于TIFF压缩7,JPEG
。
不幸的是,使用此压缩的旧TIFF文件仍然存在,因此您需要找到另一个库。好消息是你可以使用ImageIO和一个合适的插件。
使用TIFF ImageReader
插件,就像我的TwelveMonkeys ImageIO开源项目中的插件一样,你应该可以这样做:
// Create input stream
try (ImageInputStream input = ImageIO.createImageInputStream(file)) {
// Get the reader
ImageReader reader = ImageIO.getImageReaders(input).next();
try {
reader.setInput(input);
// Read page 2 of the TIFF file
BufferedImage image = reader.read(2, null);
}
finally {
reader.dispose();
}
}
(抱歉try/finally
样板,但 非常重要,以避免资源/内存泄漏。)