2007.04.09 16:55 "[Tiff] Modify decode tiff file including JPG data", by 刘阳.印艺

Hello

In verion 3.8.2, when reading tiff file including JPG data, there turns out to be a black block.

I checked the lib and find that, this may caused by a place that Color Space Converting from CMYK to RGB is not correct. I list it here and sharing it

It is in the file tif_getimage.c. The function is DECLAREContigPutFunc(putRGBcontig8bitCMYKtile)

there used to be

DECLAREContigPutFunc(putRGBcontig8bitCMYKtile)

{

    int samplesperpixel = img->samplesperpixel;

    uint16 r, g, b, k;

    (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);

             pp += samplesperpixel);

         cp += toskew;

         pp += fromskew;

    }

and currently, I change it to

DECLAREContigPutFunc(putRGBcontig8bitCMYKtile)

{

    int samplesperpixel = img->samplesperpixel;

    uint16 r, g, b, k;

    (void) x; (void) y;

    fromskew *= samplesperpixel;

    while (h-- > 0) {

         UNROLL8(w, NOP,

                   r = pp[0];

                   g = pp[1];

                   b = pp[2];

                   k = pp[3];

                   *cp++ = PACK4(r,g,b,k);

             pp += samplesperpixel);

         cp += toskew;

         pp += fromskew;

    }

}

then, the tiff file with JPG data can be read.