【问题标题】:ICC profile contains 1 component while the image data contains 3 componentsICC 配置文件包含 1 个组件,而图像数据包含 3 个组件
【发布时间】:2017-08-17 03:04:05
【问题描述】:

尝试使用 itext 7 将图像添加到 PDF 时,出现以下错误: (部分图片出现此错误。我可以成功写入其他图片。)

ERROR 4868com.itextpdf.io.IOException: ICC profile contains 1 components, while the image data contains 3 components.
    at com.itextpdf.io.color.IccProfile.getInstance(IccProfile.java:90)
    at com.itextpdf.io.image.JpegImageHelper.processParameters(JpegImageHelper.java:370)
    at com.itextpdf.io.image.JpegImageHelper.processImage(JpegImageHelper.java:142)
    at com.itextpdf.io.image.ImageDataFactory.createImageInstance(ImageDataFactory.java:524)
    at com.itextpdf.io.image.ImageDataFactory.create(ImageDataFactory.java:101)
    at com.itextpdf.io.image.ImageDataFactory.create(ImageDataFactory.java:121)
    at com.itextpdf.io.image.ImageDataFactory.create(ImageDataFactory.java:131)

下面是我使用的代码:

Cell cell = new Cell(1, 1);
Image image = new Image(ImageDataFactory.create(photoLocation));
image.setWidth(58);
image.setHeight(58f);
cell.add(image);

用于 iText5 的相同图像。

【问题讨论】:

  • 根本原因很可能是图像包含详细说明 3 个组件的 ICC 配置文件,但图像本身是灰度的。很可能是由于图像被转换为​​灰度并且转换程序没有修改配置文件。在 iText5 中会进行检查,但无论如何都会添加图像。修复源图像可能是最干净的解决方案
  • @Samuel Huylebroeck 我使用 imagemagick 来校正图像。它适用于大多数图像(3035 张图像中的 3003 张图像)。但是对于某些图像(准确地说是 32 个),即使在使用 imagemagick 之后,我仍然会遇到同样的错误。当我在这 32 个图像上使用 imagemagick 的转换命令时,命令运行没有任何错误。我该如何修复这些图像。
  • 没有线索,至少没有访问相关图像的权限。我建议从视觉和结构上检查它们,以了解它们与转换工作的图像有何不同。

标签: java itext7


【解决方案1】:

尝试重新创建场景 [但显示 4 个组件]

解决后

我遵循的过程:

https://i.stack.imgur.com/PxVET.jpg 转换为灰色说 (penguin_gray) 在 penguin_gray 上

使用 -set colorspace 转换为 penguin_result[CMYK]

magick convert penguin_gray.jpg -set colorspace CMYK penguin_result.jpg

这给出了失败的场景

现在在同一个 penguin_gray

使用-colorspace转换成penguin_result[CMYK]

magick convert penguin_gray.jpg -colorspace CMYK penguin_result.jpg

这为您提供了成功场景

这可能无法解决您的情况[因为它只显示 3 个组件,与我使用的显示 4 个组件的图像不同] 但这可以引导你解决你的案子

如果可能的话,你可以发布这些图片吗?会尝试解决

参考:http://www.imagemagick.org/discourse-server/viewtopic.php?t=17207

谢谢

【讨论】:

  • 文件名中只是多了一个空格。应该是magick convert penguin_gray.jpg -set colorspace CMYK penguin_result.jpg。这个答案有效。我遇到了这个问题 - ICC 配置文件包含 4 个组件,而图像数据包含 3 个组件。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-30
  • 2019-06-27
  • 1970-01-01
  • 2013-01-07
  • 2019-06-22
相关资源
最近更新 更多