IllegalArgumentException:源栅格波段和源颜色空间组件的数量不匹配对于彩色图像exception

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

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

这是代码,下面是图像。 下载图像并保存在您的电脑中。 并尝试使用正确的路径值运行上面的代码,它将在主题中引发exception

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

简单地说,如果有人可以从给定的图像中获取java.awt.image.BufferedImage对象就足够了(不应该将图像转换为灰度图像)。

如果你能回答这个问题,你就是天才:D。 Plz的帮助。

你的代码在这里没有任何问题。 我可以使用我的ImageIO JPEGImageReader插件读取你的图像。 这个图像阅读器试图对JPEG错误宽容,并且比标准Java JPEGImageReader稍微强大。

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

  • 首先,图像中的ICC颜色配置文件有4个颜色分量,而图像数据只有3个颜色分量(这导致您看到的exception)。 根本原因可能是糟糕的转换软件。 使用ExifTool或类似软件查看元数据以进行进一步调查。 我的读者会忽略ICC配置文件。
  • 其次,JPEG流过早结束(缺少EOI)。 您会注意到图像右下方有一些垃圾像素。 除了获取原始图像之外,没有什么可以做的(实际上,图像包含缩略图并且缩略图没有损坏;如果您确实需要,可以尝试从中重新创建数据)。 从我的阅读器返回的图像与本机软件读取的图像一致。