非法参数异常:源栅格波段和源色彩空间分量的数量不匹配 对于彩色影像例外

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

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

这是代码,下面是图像。下载图像并保存在您的PC中。并尝试使用正确的 path 值运行上述代码,它将在主题中引发异常

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

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

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


答案 1

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

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

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

答案 2

推荐