IllegalArgumentException:源栅格波段的数量和源色彩空间组件的数量不匹配 对于彩色图像,异常
您的代码在这里没有错。我可以使用ImageIO的JPEGImageReader插件读取您的图像。该图像读取器尝试宽大处理JPEG错误,并且比标准Java JPEGImageReader略胜一筹。
但是,您的JPEG文件似乎有很多问题,因此无法100%读取:
-
@H_502_5@首先,图像中的ICC颜色配置文件具有4种颜色成分,而图像数据仅具有3种颜色成分(这会导致您看到异常)。根本原因可能是转换软件不正确。使用ExifTool或类似软件查看元数据以进行进一步调查。我的读者只会忽略ICC配置文件。 @H_502_5@其次,JPEG流过早结束(缺少EOI)。您会注意到图像的右下方有一些垃圾像素。除了获取原始图像外,您无能为力(嗯,实际上,图像包含缩略图并且缩略图未损坏;如果您确实需要,可以尝试从中重新创建数据)。我的阅读器返回的图像与本机软件读取的图像一致。
解决方法
有人建议的上述答案将我的彩色图像转换为黑白图像。因此,这不适合我的问题。
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,您就是天才。请帮助。
你可能想看: