java - 无法使用 ImageIO.read(文件文件)读取 JPEG 图像

标签 java image jpeg javax.imageio

我在使用 ImageIO.read(File file) 读取这个 JPEG 文件时遇到问题 - 它会引发异常并显示“不支持的图像类型”消息。

我尝试过其他 JPEG 图像,它们似乎工作正常。

我能够发现的唯一区别是该文件似乎包含一个缩略图 - 是否已知会导致 ImageIO.read() 出现问题?

Troublesome image

编辑:

添加了结果图像:

Strange colors

最佳答案

旧帖,但供将来引用:

受此问题和此处找到的链接的启发,我为 ImageIO 编写了一个 JPEGImageReader 插件,该插件支持 CMYK 颜色模型(均具有原始颜色模型,或在读取时隐式转换为 RGB)。与此处提到的其他解决方案相比,阅读器还使用嵌入在 JPEG 流中的 ICC 配置文件进行适当的颜色转换。

它是纯 Java,不需要 JAI。源代码和二进制发行版可在 github.com/haraldk/TwelveMonkeys 免费获得, 并且受 BSD 风格的许可所涵盖。

安装后,它允许您使用 ImageIO.read(...) 读取 CMYK JPEG,如下所示:

File cmykJPEGFile = new File(/*path*/);
BufferedImage image = ImageIO.read(cmykJPEGFile);

即:在大多数情况下,没有必要修改您的代码。

关于java - 无法使用 ImageIO.read(文件文件)读取 JPEG 图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2408613/

相关文章:

linux - 有没有办法用golang将PDF转换为jpeg?

java - 使用 Jersey 输出流流式传输 excel 文件

java.lang.UnsupportedOperationException : Blobs are not cacheable

python - 使用 Python OpenCV 检测图像中的对象位置

java - ImageIO 无法写入 JPEG 文件

r - 使用 PNG/JPEG 图像创建多面板图形

java - 链表只显示第一个节点

java - 在 Gradle 依赖项中添加本地 PKCS11 JAR,以便解析子依赖项

image - Laravel 在 null 上调用成员函数 getClientOriginalExtension()

iphone - iPhone 上的图片链接不可点击