Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java IllegalArgumentException:源光栅标注栏和源颜色空间组件的数量与彩色图像异常不匹配_Java_Image Processing_Bufferedimage_Javax.imageio - Fatal编程技术网

Java IllegalArgumentException:源光栅标注栏和源颜色空间组件的数量与彩色图像异常不匹配

Java IllegalArgumentException:源光栅标注栏和源颜色空间组件的数量与彩色图像异常不匹配,java,image-processing,bufferedimage,javax.imageio,Java,Image Processing,Bufferedimage,Javax.imageio,上面有人提出的答案,将我的彩色图像转换为黑白图像。所以这不适合我的问题 File file = new File("path"); BufferedImage bufferedImage = ImageIO.read( file ); 这是代码,下面是图片。下载图像并保存在电脑中。然后尝试使用正确的path值运行上述代码,它将在主题中引发异常 下载图片: 只要有人能从给定的图像中获得java.awt.image.buffereImage对象就足够了(不应将图像转换为灰度图像

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

File file = new File("path");          
BufferedImage bufferedImage = ImageIO.read( file );
这是代码,下面是图片。下载图像并保存在电脑中。然后尝试使用正确的path值运行上述代码,它将在主题中引发异常

下载图片:

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


如果你能回答这个问题,你就是一个天才:D.请提供帮助。

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

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

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

可能重复Hi Philipp请仔细阅读我的问题。我清楚地提到“不应将图像转换为灰度图像”。你的答案是建议把我的彩色图像转换成灰度图像(黑白),如果你想的话,请试试看。不要提出其他问题,也不要不尝试就给我分数。请对您的评论负责。@PhilippSander虽然类似,但此图像的问题与您链接的图像不同。您好,Harald,非常感谢您的回答。现在我很清楚这个错误了,谢谢你的解释。我试图使用你的插件,但由于缺少一些依赖库,我无法编译它(我添加了一些twelvemonkeys imageio JAR)。因此,请您解释一下使用插件的确切方式,如果您能展示简单的代码示例以获得我的图像的缓冲区,那将是一件非常棒的事情。有关如何在java应用程序和servlet容器中使用插件的详细信息,可在此处找到:像一个符咒一样工作:)@haraldK ok,我发现包
libimage exiftool perl
包含exiftool。因此,我有一个图像,颜色分量的值为
3
,颜色空间数据为
CMYK
。IIRC,CMYK有4个颜色分量,不匹配是导致异常的原因。是吗?Maven dependency:
com.tweelvemonkeys.imageioimageio-jpeg3.3.1