From 6a071f81d798bd53dbff7910c2165a876281278a Mon Sep 17 00:00:00 2001 From: Davide Consalvo Date: Fri, 27 May 2022 12:24:19 +0200 Subject: [PATCH 1/3] fixed p2pa conversion --- src/libImaging/Convert.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libImaging/Convert.c b/src/libImaging/Convert.c index ba57deca192..5dc17db60d0 100644 --- a/src/libImaging/Convert.c +++ b/src/libImaging/Convert.c @@ -1031,7 +1031,7 @@ p2pa(UINT8 *out, const UINT8 *in, int xsize, ImagingPalette palette) { int x; int rgb = strcmp(palette->mode, "RGB"); for (x = 0; x < xsize; x++, in++) { - const UINT8 *rgba = &palette->palette[in[0]]; + const UINT8 *rgba = &palette->palette[in[0] * 4]; *out++ = in[0]; *out++ = in[0]; *out++ = in[0]; From 9a14be898c8b4f25706f6bc85f9f74d66a42cf0a Mon Sep 17 00:00:00 2001 From: Davide Consalvo Date: Fri, 27 May 2022 12:34:05 +0200 Subject: [PATCH 2/3] added p2pa test --- Tests/images/tiny.png | Bin 0 -> 16911 bytes Tests/test_image_convert.py | 14 ++++++++++++++ 2 files changed, 14 insertions(+) create mode 100644 Tests/images/tiny.png diff --git a/Tests/images/tiny.png b/Tests/images/tiny.png new file mode 100644 index 0000000000000000000000000000000000000000..3d9ff56e7ef6d2ddad44cf18ec81a89a8b56f398 GIT binary patch literal 16911 zcmeI4%WvaE9LHU;iuZW9fx&6^(Dxw+NTZ{E-qqj06ZT$`v6V1xpVos5RIuTEAAQCt=5u$V8f zkxOu6wa^F~WOqAVw&{3?l~>A~E*7h7MOhJLr7D$PXC*-_^Mb;QB~B1kK~V*fP5uh? zWw2_VVXE7$jifoaS}hEMz*TvEJRYx%iz|-T=S4+PctPSNi31PLKehvH!rA_%I7k|& zg?!z!+`w{dHjJwsIETS%p%6AS{Y%C*ayy-AQ?{Sb1CIPeb9r$^;721qPw5BiM-VjW zWUkWh9lMC%M!s|C>1h23*}cAvtCch~CO;ASEzg1_ ztPQcTl;z?^RTSloH9@H~iX}y8HmhQ@*ic%6B$w9GusPBb;WsTmaJ*xT9T1Eb<_`K` zzBH{ETG0Y?HP1)kWM3_$vwgZErwcCBM2kk%^l)j`eeDPtHGZya)~Ts35m_g>8j@TQ zrIOB>qE_Jy5iCWPt6+&jwN$PYE1HnT$K;FK7!QzLmju{e1eufM9&A)4K`oVE6C_ob zhKjrv2k{*<7;7GC^kKTyalRJ@R^!HA57P1lUap7$zpNw$4 zK{}^m>m^MaPJ6s%g(PFb3wCjRB8nh8Ae2ih}!Q;zZ+dyq@C>Pm{?^ z2bM^%XkkjPw!>5Zx@81|x+qm4p~{x#3a%l$A1Xvi#uZ6%R(ZP z&u~S~FX(uajw&Eis*-Z1hxf?eO``EH>TxZqjZ#NQojgl#+mJxH9^9`ef0hy&i#=we zk7L180OX{xT1?b7~Puc~-X@J_QU9qh3}d0seR~{7&R}bym7} ze<@y_mClrJ+g4Cd@nniIRrtK9uEW8OX0-|ywl;QFLmaZ#WYcQ%*Jd$k2x?N zjy8hRAleic5fSb{ap5$GHpN9mgga1NI1QpraS;*W4ipzogJ@G+L`1j)#f8%#+7uTN z5$-^7;WUUg#YIGfJ5XFW4WdnP5fR}I6cA6E zMMQ)q$s;SLlRPJ?JuTtq~;1I2~YAleic5fSb{ap5$GHpN9mgga1NI1QpraS;*W4ipzo zgJ|Cu*YfOV5|9nQjWC8ELAdwX)&zb);VE}>&u5tPPlul+=JprQL*a|vYrXZW?zLyD z%)OuPetGxvH@jtFkNM`SA8viGRM h` Date: Sat, 28 May 2022 09:24:42 +1000 Subject: [PATCH 3/3] Only test alpha channel values --- Tests/test_image_convert.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Tests/test_image_convert.py b/Tests/test_image_convert.py index 6b877592a94..e5639e10533 100644 --- a/Tests/test_image_convert.py +++ b/Tests/test_image_convert.py @@ -222,18 +222,18 @@ def test_p_la(): assert_image_similar(alpha, comparable, 5) -def test_p_pa(): +def test_p2pa_alpha(): with Image.open("Tests/images/tiny.png") as im: assert im.mode == "P" im_pa = im.convert("PA") - assert im_pa.mode == "PA" + assert im_pa.mode == "PA" - assert ( - im_pa.tobytes() == b"\x00\x00\x00\x00\x08\xff\x04\xff\x00\x00\x00\x00" - b"\x06\xff\x07\xff\x00\x00\x00\x00\x02\xff\x03\xff\x00" - b"\x00\x00\x00\x01\xff\x05\xff" - ) + im_a = im_pa.getchannel("A") + for x in range(4): + alpha = 255 if x > 1 else 0 + for y in range(4): + assert im_a.getpixel((x, y)) == alpha def test_matrix_illegal_conversion():