IllegalArgumentException:源光栅波段和源颜色空间分量的数量不匹配对于彩色图像异常

问题描述 投票:0回答:1

上面有人建议的答案,将我的彩色图像转换为黑白图像。所以这不适合我的问题。

File file = new File("path");          
BufferedImage bufferedImage = ImageIO.read( file );

这是代码,下面是图像。下载图像并保存在您的电脑中。并尝试使用正确的路径值运行上面的代码,它会在主题中抛出异常

下载图片:https://skydrive.live.com/?cid=19547371C4F3B839&id=19547371C4F3B839%21105

只要有人可以从给定的图像中获取 java.awt.image.BufferedImage 对象就足够了(不应将图像转换为灰度图像)。

如果你能回答这个问题,你就是个天才:D。请帮忙。

java image-processing bufferedimage javax.imageio
1个回答
32
投票

您的代码没有任何问题。我可以使用 ImageIO 的 JPEGImageReader 插件读取你的图像。该图像读取器尝试对 JPEG 错误宽容一些,并且比标准 Java JPEGImageReader 的功能稍强一些。

但是,您的 JPEG 文件似乎有很多问题,因此无法 100% 读取:

  • 首先,图像中的 ICC 颜色配置文件有 4 个颜色分量,而图像数据只有 3 个颜色分量(这导致了您看到的异常)。根本原因可能是转换软件不好。使用 ExifTool 或类似软件查看元数据以进行进一步调查。在这种情况下,我的读者只会给出警告并忽略 ICC 配置文件。
  • 其次,JPEG 流提前结束(缺少 EOI)。您会注意到图像右下角有一些垃圾像素。除了获取原始图像之外,您对此无能为力(实际上,该图像包含缩略图并且缩略图未损坏;如果确实需要,您可以尝试从中重新创建数据)。我的阅读器返回的图像与本机软件读取的图像一致。

有关如何安装插件的更多信息可以在 TwelveMonkeys ImageIO 项目页面找到。

© www.soinside.com 2019 - 2024. All rights reserved.