不支持解码旧式JPEG-in-TIFF数据

时间:2014-05-14 11:34:33

标签: java tiff

我需要显示扫描的tiff文件的第3页。我用了代码

TIFFReader reader = new TIFFReader(new File(pathOfFile));    
RenderedImage image = reader.getPage(2);    

它有时会起作用。并显示错误:不支持解码旧式JPEG-in-TIFF数据。 我用过aspriseTIFF.jar

然后我如何解决这个问题。 请回复。 提前谢谢

1 个答案:

答案 0 :(得分:4)

你遇到的问题是"旧式"您使用的库不支持JPEG compression in the TIFF formatcompression == 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样板,但 非常重要,以避免资源/内存泄漏。)