无法使用 Java ImageIO 标准库读取和写入 TIFF 图像文件

2022-09-01 15:58:00

我不知道如何处理TIFF图像,但我无法使用直接的Java标准ImageIO库读取或写入其中任何一个。有什么想法吗?

谢谢。


答案 1

如果您出于任何原因不喜欢或无法使用JAI,我已经为ImageIO编写了一个TIFF ImageReader插件,可在GitHub上找到。它是纯Java,不需要任何本机安装,并带有非常友好的开源许可证(BSD)。

它支持任何基线TIFF选项,以及许多标准扩展。从3.1版本开始,TIFF插件也具有写入支持。

在类路径中使用正确的 JAR 时,使用方法可以像以下方法一样简单:

BufferedImage image = ImageIO.read(inputTIFF);
// ...modify image (compose, resize, sharpen, etc)...
ImageIO.write(image, "TIFF", outputTIFF);

答案 2

根据 JEP 262:TIFF Image I/O,曾经是 JAI 一部分的 TIFF 插件将从 Java 9 开始作为 Java SE 的一部分提供。

这意味着,使用 Java 9 或更高版本,以下代码将正常工作,无需任何额外的导入或依赖项:

BufferedImage image = ImageIO.read(inputTIFF);
// ...modify image (compose, resize, sharpen, etc)...
ImageIO.write(image, "TIFF", outputTIFF);

我还没有能够验证此插件中对非基线TIFF风格的支持,但我认为至少应该完全支持基线TIFF。


推荐