Hi everyone, it’s been some time since I made this change in the copy of libtiff in question. I would encourage looking further into this change and not just taking it as-is. In brief:
> you are removing the “Red Book algorithm” for CMYK->RGB conversion, but you > aren’t replacing it with anything other than just passing the values through. > Is that the intent?? Yes, that’s the intent. The impetus behind this change was to retrieve CMYK color data for TIFF images where color data is stored in CMYK directly, instead of going through a CMYK -> RGB color conversion as performed by the TIFFReadRGBAImage API. When I made this change, at that time in libtiff I’d found that the CMYK color values were stored in the pp values. My change removed the very crude CMYK->RGBA conversion and replaced it with passing the CMYK values through directly. The CMYK values are assumed stored in the ICC color profile included in the CMYK tiff. Transparency is not a concern as there is no implicit background to a CMYK TIFF image, if memory serves correctly. At a minimum, to bring the change into libtiff I would encourage looking at the method name and aligning that with what’s returned; this may be better suited to an API of more accurate name. HTH, - Matt Matt Kuznicki | Engineering Manager | Adobe | C 773 330 5408 | [email protected] From: Rob Boehne <[email protected]> Date: Thursday, September 4, 2025 at 2:44 PM To: Leonard Rosenthol <[email protected]>, [email protected] <[email protected]>, Matt Kuznicki <[email protected]> Cc: Patrick Gallot <[email protected]> Subject: Re: CMYK->RGB (was Re: [Tiff] 4.7.1 release) EXTERNAL: Use caution when clicking on links or opening attachments. Adding Patrick too, he’s also interested in spelunking this issue 😉 From: Leonard Rosenthol <[email protected]> Date: Thursday, September 4, 2025 at 2:43 PM To: Rob Boehne <[email protected]>, [email protected] <[email protected]>, Matt Kuznicki <[email protected]> Subject: Re: CMYK->RGB (was Re: [Tiff] 4.7.1 release) Well Matt works for Adobe now - so let’s add him and see what he remembers 😉. Hey @Matt Kuznicki<mailto:[email protected]>... From: Rob Boehne <[email protected]> Date: Thursday, September 4, 2025 at 4:43 PM To: Leonard Rosenthol <[email protected]>, [email protected] <[email protected]> Subject: Re: CMYK->RGB (was Re: [Tiff] 4.7.1 release) EXTERNAL: Use caution when clicking on links or opening attachments. All, I want to upstream this change, or alternatively a more complete change, or if this change is fundamentally bogus – know how and why. Our practices have changed a lot since this patch was created, and if it’s going to create an onerous burden to get it accepted before the 4.7.1 release, we won’t hold it up for that. I’d also prefer to have a test to demonstrate the functionality. It might take a day or two to identify our test case that corresponds to this change, and more time to turn that into something appropriate for the libtiff test suite – any advice would be greatly appreciated. Here is the original comment in the history- Author: Matthew Kuznicki [email protected]<mailto:[email protected]> Date: Fri Apr 6 17:34:11 2001 +0000 Added support for CMYK TIFF images as unconverted CMYK images, by removing the conversion in libtiff for non CMYK->RGB mapped TIFFs. Clarified comments on ICC profiles in CacheTIFF, fixed a late colorspace setting in CacheTIFF. With the original diff in a copy of libtiff ca. 2001 diff --git a/libtiff/tif_getimage.c b/libtiff/tif_getimage.c index 3439197b4..87dea8147 100644 --- a/libtiff/tif_getimage.c +++ b/libtiff/tif_getimage.c @@ -1036,6 +1036,11 @@ DECLAREContigPutFunc(putRGBUAcontig16bittile) * * NB: The conversion of CMYK->RGB is *very* crude. */ +/* MMK: Actually, the conversion has been removed. + * Sends infomation back in CMYK order, unconverted. + * Means we lose support for transparent CMYK TIFF + * images, but how often does one see one of _those_? + */ DECLAREContigPutFunc(putRGBcontig8bitCMYKtile) { int samplesperpixel = img->samplesperpixel; @@ -1044,14 +1049,14 @@ DECLAREContigPutFunc(putRGBcontig8bitCMYKtile) (void) x; (void) y; fromskew *= samplesperpixel; while (h-- > 0) { - UNROLL8(w, NOP, - k = 255 - pp[3]; - r = (k*(255-pp[0]))/255; - g = (k*(255-pp[1]))/255; - b = (k*(255-pp[2]))/255; - *cp++ = PACK(r, g, b); + UNROLL8(w, NOP, + pp[0]; + pp[1]; + pp[2]; + pp[3]; + *cp++ = PACK4(pp[0], pp[1], pp[2], pp[3]); pp += samplesperpixel); - cp += toskew; + cp += toskew; pp += fromskew; } } From: Leonard Rosenthol <[email protected]> Date: Thursday, September 4, 2025 at 11:02 AM To: Rob Boehne <[email protected]>, [email protected] <[email protected]> Subject: CMYK->RGB (was Re: [Tiff] 4.7.1 release) If I read that PR correctly, you are removing the “Red Book algorithm” for CMYK->RGB conversion, but you aren’t replacing it with anything other than just passing the values through. Is that the intent?? Leonard From: Tiff <[email protected]> on behalf of Rob Boehne via Tiff <[email protected]> Date: Thursday, September 4, 2025 at 1:00 PM To: [email protected] <[email protected]> Subject: Re: [Tiff] 4.7.1 release EXTERNAL: Use caution when clicking on links or opening attachments. Even, We opened a merge request recently that we would like to get in the next release. It implements CMYK to RGB conversion, and we have been patching libtiff with this for many years (so we have high confidence in it). https://gitlab.com/libtiff/libtiff/-/merge_requests/751/diffs I can get any feedback on the MR responded to today – so if there are any other potential problems we can get them resolved quickly. Thanks, Robert Boehne From: Tiff <[email protected]> on behalf of Even Rouault via Tiff <[email protected]> Date: Thursday, September 4, 2025 at 8:54 AM To: [email protected] <[email protected]> Subject: [Tiff] 4.7.1 release Hi, I see 4.7.0 was released about one year ago. I can issue a 4.7.1 release. Is there anything that should be included in it before? Even -- http://www.spatialys.com<http://www.spatialys.com/> My software is free, but my time generally not. _______________________________________________ Tiff mailing list [email protected] https://lists.osgeo.org/mailman/listinfo/tiff
_______________________________________________ Tiff mailing list [email protected] https://lists.osgeo.org/mailman/listinfo/tiff
