Hi
I need to convert images that has lab color space into rgb or cmyk. The code I'm using is this:
ElementBuilder elementBuilder = new ElementBuilder();
ElementWriter elementWriter = new ElementWriter();
elementWriter.begin(page, ElementWriter.e_replacement, false);
if ((element.getType() == Element.e_image || element.getType() == Element.e_inline_image)) {
if (element.getImageColorSpace().getType() == ColorSpace.e_lab) {
Image2RGB image2rgb = new Image2RGB(element);
FilterReader image_reader = new FilterReader(image2rgb);
Image image = Image.create(pdfDoc, image_reader, element.getImageWidth(), element.getImageHeight(), 8, ColorSpace.createDeviceRGB());
Element newElementImage = elementBuilder.createImage(image, element.getCTM());
elementWriter.writePlacedElement(newElementImage);
}
}
It works, but new image has new rendering intent (e_relative_colorimetric) and I need to preserve original image rendering intent(perceptual).
What is proper way to do this? I do it like this:
newElementImage.getGState().setRenderingIntent(GState.e_perceptual);
Pdftron returns correct rendering intent for this new image, but Adobe Acrobat pro 9 Preflight doesn't show any rendering intent. In fact, it doesn't show any ICC for this image (original image had ICC). How do I preserve icc/copy icc from orig image to new one?
I tried with (to be used in Image.create):
ColorSpace iccFromFilter = ColorSpace.createICCFromFilter(pdfDoc, element.getImageData());
but I get error:
Exception:
Message: Bad ICC profile
Conditional expression: prof.get()
Filename : ColorSpace.cpp
Function : trn::PDF::ColorSpace::CreateICC
Linenumber : 72
Error code : 0
Thanks for your help