由于使用不兼容的颜色配置文件,我遇到了 Unsupported Image Type 错误com.sun.imageio.plugins.jpeg.JPEGImageReader
。后来我发现 TwelveMonkeys 插件被证明可以解决这个问题,并在我的项目类路径中引用了依赖的 .jar。我从 TwelveMonkeys github 存储库下载了它们。注意我使用的是 3.0.2 版本,因为我在 Java 6 上运行 JDK 1.6.0_45。这些是我添加到项目中的 .jar:
common-lang-3.0.2.jar
common-io-3.0.2.jar
common-image-3.0.2.jar
imageio-core-3.0.2.jar
imageio-metadata-3.0.2.jar
imageio-jpeg-3.0.2.jar
我能够使用以下测试来测试库是否已安装和工作:
Iterator<ImageReader> readers = ImageIO.getImageReadersByFormatName("JPEG");
while (readers.hasNext()) {
System.out.println("reader: " + readers.next());
}
哪个输出:
reader: com.twelvemonkeys.imageio.plugins.jpeg.JPEGImageReader@4102799c
reader: com.sun.imageio.plugins.jpeg.JPEGImageReader@33d6f122
当我运行我的代码时,它仍在尝试读取 JPEGcom.sun.imageio.plugins.jpeg.JPEGImageReader
并继续抛出 IIOException。有任何想法吗?
更新:它看起来像 iTextPDF 导致的问题是项目使用的库。我设置了一个准系统测试应用程序,将 CMYK JPEG 转换为 aBufferedImage
然后调用ImageIO.read(img)
它工作正常。我很难找到为什么 iText 在同一个项目和类路径中调用时找不到 TwelveMonkeys 插件的原因ImageIO.read(img)
,但这可能是由于我的知识有限。我还应该补充一点,我正在处理的应用程序是 Web 服务 API 的一部分。