diff --git a/Tests/test_lib_pack.py b/Tests/test_lib_pack.py index f7812f62bd8..963d35b067e 100644 --- a/Tests/test_lib_pack.py +++ b/Tests/test_lib_pack.py @@ -340,6 +340,10 @@ def test_RGB(self): self.assert_unpack("RGB", "G;16N", 2, (0, 1, 0), (0, 3, 0), (0, 5, 0)) self.assert_unpack("RGB", "B;16N", 2, (0, 0, 1), (0, 0, 3), (0, 0, 5)) + self.assert_unpack( + "RGB", "CMYK", 4, (250, 249, 248), (242, 241, 240), (234, 233, 233) + ) + def test_RGBA(self): self.assert_unpack("RGBA", "LA", 2, (1, 1, 1, 2), (3, 3, 3, 4), (5, 5, 5, 6)) self.assert_unpack( diff --git a/src/libImaging/Convert.c b/src/libImaging/Convert.c index 7677a81f72f..b08519d3045 100644 --- a/src/libImaging/Convert.c +++ b/src/libImaging/Convert.c @@ -564,7 +564,7 @@ rgb2cmyk(UINT8 *out, const UINT8 *in, int xsize) { } } -static void +void cmyk2rgb(UINT8 *out, const UINT8 *in, int xsize) { int x, nk, tmp; for (x = 0; x < xsize; x++) { diff --git a/src/libImaging/Convert.h b/src/libImaging/Convert.h new file mode 100644 index 00000000000..e688e301836 --- /dev/null +++ b/src/libImaging/Convert.h @@ -0,0 +1,2 @@ +extern void +cmyk2rgb(UINT8 *out, const UINT8 *in, int xsize); diff --git a/src/libImaging/Unpack.c b/src/libImaging/Unpack.c index 206403ba6e0..bef4bea6642 100644 --- a/src/libImaging/Unpack.c +++ b/src/libImaging/Unpack.c @@ -31,6 +31,7 @@ */ #include "Imaging.h" +#include "Convert.h" #define R 0 #define G 1 @@ -1589,6 +1590,7 @@ static struct { {"RGB", "R;16B", 16, band016B}, {"RGB", "G;16B", 16, band116B}, {"RGB", "B;16B", 16, band216B}, + {"RGB", "CMYK", 32, cmyk2rgb}, /* true colour w. alpha */ {"RGBA", "LA", 16, unpackRGBALA},