From efb0915b19f5133fc5abb21b009c196c8ba96d6d Mon Sep 17 00:00:00 2001 From: Alexander Date: Mon, 28 Aug 2017 17:11:08 +0300 Subject: [PATCH] Convert CMYK to RGB like Google Chrome --- libImaging/Convert.c | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/libImaging/Convert.c b/libImaging/Convert.c index f4253bda4..e811d9c18 100644 --- a/libImaging/Convert.c +++ b/libImaging/Convert.c @@ -536,12 +536,15 @@ rgb2cmyk(UINT8* out, const UINT8* in, int xsize) static void cmyk2rgb(UINT8* out, const UINT8* in, int xsize) { - int x; - for (x = 0; x < xsize; x++, in += 4) { - *out++ = CLIP(255 - (in[0] + in[3])); - *out++ = CLIP(255 - (in[1] + in[3])); - *out++ = CLIP(255 - (in[2] + in[3])); - *out++ = 255; + int x, nk, tmp; + for (x = 0; x < xsize; x++) { + nk = 255 - in[3]; + out[0] = CLIP(nk - MULDIV255(in[0], nk, tmp)); + out[1] = CLIP(nk - MULDIV255(in[1], nk, tmp)); + out[2] = CLIP(nk - MULDIV255(in[2], nk, tmp)); + out[3] = 255; + out += 4; + in += 4; } }