2017-08-17 127 views
4

当添加利用iText 7图片为PDF格式,我得到以下错误: (这个错误出现了一些图片,我可以成功写入其他图像。)ICC配置文件包含1个部分,而图像数据中包含3个部分

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工作相同的图像。

+2

的根本原因是最有可能的是,图像中包含的ICC配置文件,详细说明3层的组件,但是图像本身是灰度。最有可能是由于图像被转换为​​灰度,转换程序未修改配置文件。在iText5中检查发生,但无论如何都会添加图像。修复源图像可能是最干净的解决方案 –

+0

@Samuel Huylebroeck我使用imagemagick来更正图像。它适用于大多数图像(3035张图像中有3003张图像)。但即使在使用imagemagick后,对于一些图像(确切地说32),我仍然得到相同的错误。当我在这32个图像上使用imagemagick的转换命令时,命令运行时没有任何错误。我怎样才能修复这些图像。 – ashishjmeshram

+0

没有线索,至少没有无法访问有问题的图像。我建议在视觉和结构上检查它们,以了解它们与转换所用图像的不同之处。 –

回答

0

Tried to Recreate the Scenario [but showing 4 components]

enter image description here

And after Resolving

enter image description here

我跟着过程:

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

使用-set色彩空间转换到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种成分的图像不像] 但是,这可能会导致你解决你的情况

如果可能的话u能张贴这些图像,将尝试解决

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

感谢