From bed2ed7438b512e4cfb18bc3a3bb18f4a53d8a87 Mon Sep 17 00:00:00 2001 From: Meithal Date: Fri, 12 Jun 2020 09:08:20 +0200 Subject: [PATCH 01/10] Fixes BLP1 picture handling --- src/PIL/BlpImagePlugin.py | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/src/PIL/BlpImagePlugin.py b/src/PIL/BlpImagePlugin.py index 5ccba37db..8cdf0aae1 100644 --- a/src/PIL/BlpImagePlugin.py +++ b/src/PIL/BlpImagePlugin.py @@ -245,7 +245,7 @@ class BlpImageFile(ImageFile.ImageFile): if self.magic == b"BLP1": decoder = "BLP1" - self.mode = "RGB" + self.mode = "RGBA" elif self.magic == b"BLP2": decoder = "BLP2" self.mode = "RGBA" if self._blp_alpha_depth else "RGB" @@ -331,7 +331,7 @@ class BLP1Decoder(_BLPBaseDecoder): except struct.error: break b, g, r, a = palette[offset] - data.extend([r, g, b]) + data.extend([r, g, b, 0xFF]) # is there a case where alpha is used? self.set_as_raw(bytes(data)) else: @@ -353,9 +353,19 @@ class BLP1Decoder(_BLPBaseDecoder): data = jpeg_header + data data = BytesIO(data) image = JpegImageFile(data) - self.tile = image.tile # :/ - self.fd = image.fp - self.mode = image.mode + image.mode = "RGBA" + image.tile = [("jpeg", (0, 0) + self.size, 0, ("RGBA", ""))] + + b, g, r, a = image.split() + if not any( + [a.getpixel((x, y)) for x in range(a.width) for y in range(a.height)] + ): + # try to unprotect completely transparent pictures + from PIL import ImageOps + + a = ImageOps.invert(a) + image = Image.merge("RGBA", (r, g, b, a)) + self.set_as_raw(image.tobytes()) class BLP2Decoder(_BLPBaseDecoder): From 096d2bf64a6d5d738c84cca7b57e19a0c468f14f Mon Sep 17 00:00:00 2001 From: Meithal Date: Fri, 12 Jun 2020 18:48:15 +0200 Subject: [PATCH 02/10] Coverage change fix --- src/PIL/BlpImagePlugin.py | 7 ------- 1 file changed, 7 deletions(-) diff --git a/src/PIL/BlpImagePlugin.py b/src/PIL/BlpImagePlugin.py index 8cdf0aae1..bb3a90bb8 100644 --- a/src/PIL/BlpImagePlugin.py +++ b/src/PIL/BlpImagePlugin.py @@ -357,13 +357,6 @@ class BLP1Decoder(_BLPBaseDecoder): image.tile = [("jpeg", (0, 0) + self.size, 0, ("RGBA", ""))] b, g, r, a = image.split() - if not any( - [a.getpixel((x, y)) for x in range(a.width) for y in range(a.height)] - ): - # try to unprotect completely transparent pictures - from PIL import ImageOps - - a = ImageOps.invert(a) image = Image.merge("RGBA", (r, g, b, a)) self.set_as_raw(image.tobytes()) From 919f38e3d9b13aef38b87a7e08ce8ba879be7cf3 Mon Sep 17 00:00:00 2001 From: Meithal Date: Mon, 5 Jul 2021 00:20:15 +0200 Subject: [PATCH 03/10] Try test --- Tests/images/blp/blp1_jpeg.jpg | Bin 0 -> 1651 bytes Tests/images/blp/blp1_jpeg.png | Bin 0 -> 270 bytes Tests/images/blp/war3mapMap.blp | Bin 0 -> 19430 bytes Tests/images/blp/war3mapMap.jpg | Bin 0 -> 1651 bytes Tests/images/blp/war3mapMap.png | Bin 0 -> 270 bytes Tests/test_file_blp.py | 6 ++++++ src/PIL/BlpImagePlugin.py | 14 ++++++++++++-- 7 files changed, 18 insertions(+), 2 deletions(-) create mode 100644 Tests/images/blp/blp1_jpeg.jpg create mode 100644 Tests/images/blp/blp1_jpeg.png create mode 100644 Tests/images/blp/war3mapMap.blp create mode 100644 Tests/images/blp/war3mapMap.jpg create mode 100644 Tests/images/blp/war3mapMap.png diff --git a/Tests/images/blp/blp1_jpeg.jpg b/Tests/images/blp/blp1_jpeg.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c045c5945c1071f3d4bd4e3f0d878cec6899bc17 GIT binary patch literal 1651 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<uA z0}~@NGZPClD=P~NP<1U(o`FS>RY=j$kxe)-kzJ`!#HexNLJno8jR!@8E`CrkPAY2R z|V^&07y2J$~}^+4C1KUw!=a`ODXD-+%o41@afjpD+ON7@EHXf&OA*VPR%r2lxYE#}NLy#lXYN2#h>tK?Zwfl gP32wyWDa4_AkC=Dz<6e<1v|(Sp00i_>zopr0LjD?Hvj+t literal 0 HcmV?d00001 diff --git a/Tests/images/blp/war3mapMap.blp b/Tests/images/blp/war3mapMap.blp new file mode 100644 index 0000000000000000000000000000000000000000..03afb3aa5919a856946c916056f89a522ad82692 GIT binary patch literal 19430 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 Tgm1M#U*!PD{hz-9NCW>1<>tIM literal 0 HcmV?d00001 diff --git a/Tests/images/blp/war3mapMap.jpg b/Tests/images/blp/war3mapMap.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c045c5945c1071f3d4bd4e3f0d878cec6899bc17 GIT binary patch literal 1651 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<uA z0}~@NGZPClD=P~NP<1U(o`FS>RY=j$kxe)-kzJ`!#HexNLJno8jR!@8E`CrkPAY2R z|V^&07y2J$~}^+4C1KUw!=a`ODXD-+%o41@afjpD+ON7@EHXf&OA*VPR%r2lxYE#}NLy#lXYN2#h>tK?Zwfl gP32wyWDa4_AkC=Dz<6e<1v|(Sp00i_>zopr0LjD?Hvj+t literal 0 HcmV?d00001 diff --git a/Tests/test_file_blp.py b/Tests/test_file_blp.py index 15bd7e4f8..3e4401996 100644 --- a/Tests/test_file_blp.py +++ b/Tests/test_file_blp.py @@ -20,6 +20,12 @@ def test_load_blp2_dxt1a(): assert_image_equal_tofile(im, "Tests/images/blp/blp2_dxt1a.png") +def test_load_blp1(): + with Image.open("Tests/images/blp/war3mapMap.blp") as im: + im.convert("RGB") + assert_image_equal_tofile(im, "Tests/images/blp/war3mapMap.png") + + @pytest.mark.parametrize( "test_file", [ diff --git a/src/PIL/BlpImagePlugin.py b/src/PIL/BlpImagePlugin.py index f62b1bebe..c286a8197 100644 --- a/src/PIL/BlpImagePlugin.py +++ b/src/PIL/BlpImagePlugin.py @@ -28,7 +28,7 @@ BLP files come in many different flavours: - DXT3 compression is used if alpha_encoding == 1. - DXT5 compression is used if alpha_encoding == 7. """ - +print("foo") import struct from io import BytesIO @@ -245,7 +245,7 @@ class BlpImageFile(ImageFile.ImageFile): if self.magic == b"BLP1": decoder = "BLP1" - self.mode = "RGBA" + self.mode = "BGRA" elif self.magic == b"BLP2": decoder = "BLP2" self.mode = "RGBA" if self._blp_alpha_depth else "RGB" @@ -361,6 +361,16 @@ class BLP1Decoder(_BLPBaseDecoder): image.tile = [("jpeg", (0, 0) + self.size, 0, ("RGBA", ""))] b, g, r, a = image.split() + print(b, g, r, a) + if not any( + [a.getpixel((x, y)) for x in range(a.width) for y in range(a.height)] + ): + # try to unprotect completely transparent pictures + from PIL import ImageOps + + a = ImageOps.invert(a) + + image = Image.merge("RGBA", (r, g, b, a)) self.set_as_raw(image.tobytes()) From 3fbc9eb2290a9fcaba31f972dc8aaf09358a2e45 Mon Sep 17 00:00:00 2001 From: Meithal Date: Thu, 15 Jul 2021 20:33:35 +0200 Subject: [PATCH 04/10] self.mode = "BGRA" wasn't correct and captured by #affa059 --- Tests/images/blp/war3mapMap.jpg | Bin 1651 -> 0 bytes Tests/images/blp/war3mapMap.png | Bin 270 -> 0 bytes Tests/test_file_blp.py | 3 ++- src/PIL/BlpImagePlugin.py | 2 +- 4 files changed, 3 insertions(+), 2 deletions(-) delete mode 100644 Tests/images/blp/war3mapMap.jpg delete mode 100644 Tests/images/blp/war3mapMap.png diff --git a/Tests/images/blp/war3mapMap.jpg b/Tests/images/blp/war3mapMap.jpg deleted file mode 100644 index c045c5945c1071f3d4bd4e3f0d878cec6899bc17..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1651 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<uA z0}~@NGZPClD=P~NP<1U(o`FS>RY=j$kxe)-kzJ`!#HexNLJno8jR!@8E`CrkPAY2R z|V^&07y2J$~}^+4C1KUw!=a`ODXD-+%o41@afjpD+ON7@EHXf&OA*VPR%r2lxYE#}NLy#lXYN2#h>tK?Zwfl gP32wyWDa4_AkC=Dz<6e<1v|(Sp00i_>zopr0LjD?Hvj+t diff --git a/Tests/test_file_blp.py b/Tests/test_file_blp.py index 3e4401996..c3540f4fa 100644 --- a/Tests/test_file_blp.py +++ b/Tests/test_file_blp.py @@ -22,7 +22,8 @@ def test_load_blp2_dxt1a(): def test_load_blp1(): with Image.open("Tests/images/blp/war3mapMap.blp") as im: - im.convert("RGB") + png = im.copy() + png.save(fp="Tests/images/blp/war3mapMap.png") assert_image_equal_tofile(im, "Tests/images/blp/war3mapMap.png") diff --git a/src/PIL/BlpImagePlugin.py b/src/PIL/BlpImagePlugin.py index c286a8197..907d33a20 100644 --- a/src/PIL/BlpImagePlugin.py +++ b/src/PIL/BlpImagePlugin.py @@ -245,7 +245,7 @@ class BlpImageFile(ImageFile.ImageFile): if self.magic == b"BLP1": decoder = "BLP1" - self.mode = "BGRA" + self.mode = "RGBA" elif self.magic == b"BLP2": decoder = "BLP2" self.mode = "RGBA" if self._blp_alpha_depth else "RGB" From a139b9784541659c86ba9994563f07a3ba3ef4bc Mon Sep 17 00:00:00 2001 From: Meithal Date: Thu, 15 Jul 2021 20:48:47 +0200 Subject: [PATCH 05/10] Cleanup --- src/PIL/BlpImagePlugin.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/PIL/BlpImagePlugin.py b/src/PIL/BlpImagePlugin.py index 907d33a20..6909599c1 100644 --- a/src/PIL/BlpImagePlugin.py +++ b/src/PIL/BlpImagePlugin.py @@ -28,7 +28,7 @@ BLP files come in many different flavours: - DXT3 compression is used if alpha_encoding == 1. - DXT5 compression is used if alpha_encoding == 7. """ -print("foo") + import struct from io import BytesIO From 8e9da1559b71a01380d3324e3ae12396fd07e395 Mon Sep 17 00:00:00 2001 From: Andrew Murray Date: Thu, 30 Dec 2021 14:47:59 +1100 Subject: [PATCH 06/10] Lint fix --- src/PIL/BlpImagePlugin.py | 1 - 1 file changed, 1 deletion(-) diff --git a/src/PIL/BlpImagePlugin.py b/src/PIL/BlpImagePlugin.py index 6909599c1..f968ed851 100644 --- a/src/PIL/BlpImagePlugin.py +++ b/src/PIL/BlpImagePlugin.py @@ -370,7 +370,6 @@ class BLP1Decoder(_BLPBaseDecoder): a = ImageOps.invert(a) - image = Image.merge("RGBA", (r, g, b, a)) self.set_as_raw(image.tobytes()) From 1be53c8bb3b729ddbd445a150efbf17b852a9703 Mon Sep 17 00:00:00 2001 From: Andrew Murray Date: Tue, 18 Jan 2022 09:08:50 +1100 Subject: [PATCH 07/10] Removed debugging --- src/PIL/BlpImagePlugin.py | 1 - 1 file changed, 1 deletion(-) diff --git a/src/PIL/BlpImagePlugin.py b/src/PIL/BlpImagePlugin.py index f968ed851..3026ec49f 100644 --- a/src/PIL/BlpImagePlugin.py +++ b/src/PIL/BlpImagePlugin.py @@ -361,7 +361,6 @@ class BLP1Decoder(_BLPBaseDecoder): image.tile = [("jpeg", (0, 0) + self.size, 0, ("RGBA", ""))] b, g, r, a = image.split() - print(b, g, r, a) if not any( [a.getpixel((x, y)) for x in range(a.width) for y in range(a.height)] ): From acd33bf62acd2abb31fe5bc85c51f57406afc1ca Mon Sep 17 00:00:00 2001 From: Andrew Murray Date: Tue, 18 Jan 2022 09:10:36 +1100 Subject: [PATCH 08/10] Removed unused images --- Tests/images/blp/blp1_jpeg.jpg | Bin 1651 -> 0 bytes Tests/images/blp/blp1_jpeg.png | Bin 270 -> 0 bytes 2 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 Tests/images/blp/blp1_jpeg.jpg delete mode 100644 Tests/images/blp/blp1_jpeg.png diff --git a/Tests/images/blp/blp1_jpeg.jpg b/Tests/images/blp/blp1_jpeg.jpg deleted file mode 100644 index c045c5945c1071f3d4bd4e3f0d878cec6899bc17..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1651 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<uA z0}~@NGZPClD=P~NP<1U(o`FS>RY=j$kxe)-kzJ`!#HexNLJno8jR!@8E`CrkPAY2R z|V^&07y2J$~}^+4C1KUw!=a`ODXD-+%o41@afjpD+ON7@EHXf&OA*VPR%r2lxYE#}NLy#lXYN2#h>tK?Zwfl gP32wyWDa4_AkC=Dz<6e<1v|(Sp00i_>zopr0LjD?Hvj+t From 985e4fbe40a3409f3efaf0b2482e0eab7af19280 Mon Sep 17 00:00:00 2001 From: Andrew Murray Date: Thu, 17 Feb 2022 22:20:52 +1100 Subject: [PATCH 09/10] Simplified code --- src/PIL/BlpImagePlugin.py | 19 ++++--------------- 1 file changed, 4 insertions(+), 15 deletions(-) diff --git a/src/PIL/BlpImagePlugin.py b/src/PIL/BlpImagePlugin.py index 3026ec49f..be8fdce93 100644 --- a/src/PIL/BlpImagePlugin.py +++ b/src/PIL/BlpImagePlugin.py @@ -245,7 +245,7 @@ class BlpImageFile(ImageFile.ImageFile): if self.magic == b"BLP1": decoder = "BLP1" - self.mode = "RGBA" + self.mode = "RGB" elif self.magic == b"BLP2": decoder = "BLP2" self.mode = "RGBA" if self._blp_alpha_depth else "RGB" @@ -334,7 +334,7 @@ class BLP1Decoder(_BLPBaseDecoder): except struct.error: break b, g, r, a = palette[offset] - data.extend([r, g, b, 0xFF]) # is there a case where alpha is used? + data.extend([r, g, b]) self.set_as_raw(bytes(data)) else: @@ -357,19 +357,8 @@ class BLP1Decoder(_BLPBaseDecoder): data = BytesIO(data) image = JpegImageFile(data) Image._decompression_bomb_check(image.size) - image.mode = "RGBA" - image.tile = [("jpeg", (0, 0) + self.size, 0, ("RGBA", ""))] - - b, g, r, a = image.split() - if not any( - [a.getpixel((x, y)) for x in range(a.width) for y in range(a.height)] - ): - # try to unprotect completely transparent pictures - from PIL import ImageOps - - a = ImageOps.invert(a) - - image = Image.merge("RGBA", (r, g, b, a)) + image.mode = "RGB" + image.tile = [("jpeg", (0, 0) + self.size, 0, ("BGRX", ""))] self.set_as_raw(image.tobytes()) From 58509a48a8d7ae0656ab816a648586306d51622a Mon Sep 17 00:00:00 2001 From: Andrew Murray Date: Thu, 17 Feb 2022 22:20:11 +1100 Subject: [PATCH 10/10] Use existing image --- Tests/images/blp/blp1_jpeg.png | Bin 0 -> 57903 bytes Tests/images/blp/war3mapMap.blp | Bin 19430 -> 0 bytes Tests/test_file_blp.py | 12 +++++------- 3 files changed, 5 insertions(+), 7 deletions(-) create mode 100644 Tests/images/blp/blp1_jpeg.png delete mode 100644 Tests/images/blp/war3mapMap.blp diff --git a/Tests/images/blp/blp1_jpeg.png b/Tests/images/blp/blp1_jpeg.png new file mode 100644 index 0000000000000000000000000000000000000000..be151f205ed3dba3699244688f1ea76b2f9ba1b5 GIT binary patch literal 57903 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 AEdT%j literal 0 HcmV?d00001 diff --git a/Tests/images/blp/war3mapMap.blp b/Tests/images/blp/war3mapMap.blp deleted file mode 100644 index 03afb3aa5919a856946c916056f89a522ad82692..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19430 zcmeIaXH-*N+b+67RZvj`DI%bNR0RbT5C|4PKzi>8A|+C!7a_rhQbehWKtxLDL3$60 zfOP2s(tEF=rR^2a=Y7BT+k205zF+6ZVGKwzGuK+P-1BbNb#v>U))nCI4+MMz{!;(> zoIv&Wi~rfHs`CHry1!SsQUCzy7ikPQsj8%+1VF%{LCE7H5dk3;XAj#)0y=`+s#=Q5 z-1i);-R`^jig0_`y16^JICEbSkra^-5x)kIhJf1u(+LJfhT}|(CmC6onOHfmp6BG? z;FJ@&%zITu;hvhZf|8<^iMzFyzLSBX(t}sFPTu}OPlGh9!sEgMV%-CSo{(<>VP;|B zWaqqb{``$6x=OlF{$Kx)zC%8P6QG71{QR9Ggo2WanuhksQ9AmQ00o4Sl7fnonwkn+ zc}M{G9YA%8n(_RVn>44j@6%p*%yc#AUGfp0TVK91>vXR1id(xqJxX_mg_Vt+?;^i| zppb;*wd+#SGPmz2DkpCHn*_bJG*=P5PBh5&A8k2<9Lad@0n;- zH|OBTId4H=3P38r1TdPy^Gt@0<9!lYxpp$1kO1z>g;~eG)aK1=h?#YHDQD}X3M$9D z!~h*diiCxToUTRD)|SPxz(PDL?cfFC&b->9gwuN9F-!Bhp-FO^4cMl+sE7Hu#(>r$ z!oMN{K8vnuW8*E`cCQe;8So_F8Kg_fD0H@zX;D91=4xgDI+E2{cVsU-gQmjT!VPj**V1BO*M+8WO zYkiSOjJt;Zapv0doa%J+kE1dn{hrA+iwakVs(qOQkNSz%#%W#pMFO&*tA-ld#AVTS zVsKgvys`yv`RR;bzZc=nG7iwg+BuZh7vQfEgHd9100jd0bTA1D1m!Jx9t=p?S;C6$=FG z=dV_DqRz?wo)l>$U@cH`#tyo%IJ?j3>_P%A*H{@oBe)S@aS-Ar*J5V<3liXiBJ$E8 zRd>7={BfQ@3XG-?_+0yE#kqE*@fh)sT*Uc*TkyAk7o6HasP@@Y!3K@1>NlM9tR$MUnP33+euUByUUZN2qAeV3^B2TZR6ZZ_Knp?vf zP^;#0CHie0O-Y@h=YyV@co|n8l!Z=Mm%8vUgn4wob1UZxvfd*2vMt_|c#;D?*@)lo zG$krV5-Z}NdrTz2yw;Qpt4vrh*2Gm|zFX)MS4Gz$7M55vRx;6YQWJk~{5!l#j|7~C z6w_ES)zW@To~HBD|M@i0sKHd+?2=UPcO}MwAphnFT1r|Sj2BX;{>3lKIS{;K^S{i%WyY#_;d?0p9><+Wp@B{>zkv z8U8aYgbC#CTXyT}-W|>j;Pb-Hx!ziV#SG6Lnu?<*Gv^$Iy22gZp4XgFG{>@a3 z$JD;|D-}WAPV=bJsp-PNoNrQerwksu1wNw2$yyE*90(?H8|W&yPBI=D3jA#fui>hX zSTKT5;f-hqCWxzx%DtIz(Frc?IugJ?QEOSKNEq!4evyX9yplb^wFfd0a?DvaBr}4KJ^q^7eR$O+WI7}|zOY(&^X~9Izdc;<^4VM5#9@C_{ zeb3JEjQw%m`-t7J8M7D==;s=R!x(@pV$_TsMZ_K~Zv!Y9poaP*88QDM85gZUTQLMjoAlF>fWZqMR`8MWO+2FbYN66C4)&$o zqpBaZyzEk5qhz9O*_}H!DbNGc;MC3F2Dy05>)8OcQ+Q+uxI~y?0yrrb@}!I+rtn&{ z2i=r=7d;{-xOBh6`6m$a9ilsM6Zu@jJ^0D}Se`v76QuI+*;zT1&9)kApn7b33v_ho68TKlA4XjeyJjU#R|14oaw61^U5aBo`A3 zt)gs&ua?d#7b7=YRvBCjiGiA{z$O=Nd9QQX5iVP^wvC0)P7&7_u8@G5(L~NZ)c>X5 z(!cdftC0>EUtR!5)kGNMv>^cj7#X=-&DppS&Ji@8fFx2u4#tx**hBRF(~~@Yh5yzU zj~t;?X==)Js1@vaCfuk^_!m7Crg_^OZu)GF zIQf&KDuZlGX-hU_&YaF%e}urP#d%dkDzbrP@=wHIimg_c^c6$Gfo z4$LF(OCDhxDavXGrO@1qC2C$yFY8)PU5qL)&A*7_!okyAu%i3EyXPzikXxX)!v~RX zB#zFjEm)4?DRJV&BoZ+7iR%FgaM?;(FnIz;z#lr`E%DKmOUPwnbbuy~1b|H>pnH_u z1}C?vX-2FuEOqSr?*aptR0XXD>ecV@JU5Fj&#^NVjgfJF93N9^kblxpy5S%B$OYx2 z9B!_8n`jH|cRkZc&?W(XVJUfzjSA*a>xMj*e3qu4XmqU^dW+xoRaWFfGkjJ!CNBmH>(GlT< z$$y*^3V$dTHE+(!hnt=AvPG^kl7J)hWZh$v0B=EmFvfriD9C~Vn~lvgqs6sqh=}6q zq3hhDX2-sb6farp&$W~yGqZ&8&D&N8GQn*j}Knx2kiMrm3{y6UbB?7VmzZ zq9gR!``(c}i#uO665DJ-GIiMNoO5Ox^>bAObqgX4d+11jeH?By%{|~DdXq@Y(*Kxi zb8}6Be~|CMcXrH8+okP?p-XqUnVla{J(%*-eIxYQab+=o{7p`3d0H#F7*Wo@pT5t& zoQ-E&UMuWI6IXTdBF7ds8IIBO6J_BYxh|kz;zq1UdPV}?X<~m=#hQqb-8<=2PKg!>vTYQK*Jc8Y?&echs@%X;9E>HQU+JrY1g5%Ae^H8A>Mb`b1u z9*BqNM0H@(KrFmU4bRO&0>19{Ns~=e%tsQ?f_~3D&V4s^i>6%clJd!q z0~}Jm0{zdEUQ7I9_oc-!uMFSt!pbeCM^!lNA(G7Czb%_1QEE9nJB%5fiyB<6v~gTJ zh8t;1nIwQWaNM5`y1DYVF=arPc$e^X30&@uvVb3SJK9+pwybhec~8uxl!UZZR5LLU5L6N~3yFMCm+w zxO+6SBdorN5Pr5??kvO#!To#GhZtk@L?*o)m4h6!IDI7ZvR`}~5zv5n?Nw2(TAi0)_5(+Gler&{AR^Dj5gZvUL|lc_IPLj2S`sQQr$jeVsJB;dGTqA_xfhsaH@ ziB(=yV%XK}F?LzwBXVGnalcM^_h)ZM-bEo_&#Nm&5jz#So&O>EHAIOrY^;S!T)Jm7b?w8X~J^ zF_|b^ftoSBBnFWc%SwE9#HpLzRVg`8p0@6pbETmhtRp#XYnlxPJwIXJbhw1P;m!g2AL9@6SN*ndy#NjyIY|_ zfMD>rB1BDrr-1vs*=EATmlmET#jnL}{=XW9qxA)EEynNUGgfJrx14~bdt|naXjiUy z=+$**Uv{X!J~Ae)ukBhzm+?(v(mwmbeD@0hx39c;)N1K87AIWAU=b{QLKQIEhrZ>{ zQ$&<2R&DJTsP4WPa>V8&)9R>RF?p|(Ce*F*Xy~#Im%DLcCGj?1fdM=?La&>3V&Sey`?R# zIlc#uI1%gl$`7fURXnM}x2{$odMfk@=&a80Hp$`K=+Pn{> zbJET@}=AAu#?ADG){ID3uDg97L z(}H7+RD*`L3HIT;G>y~IlV?>{YO@a<`2kQ{mLlg|$-=uZ0{_H3_P@)LXoXF2zO3#; zdu-cP^>%CO?NCIov9?d+FwJF;S-sUamB-;h(>7vnLT8^=ag9+)1~pT~jxP2UlhZ7B z=4!#fvu<_|V!cVw+V5AozN^-=)C&6STV;eedR$_ba1e*i2RaOzCX1Oz zdY*+2VCC40l0ki15}=SpZz|6q0DC8W-_8L>$%^#$?O}ZC}m}yZ47Mu5{zbFn|TwFwL}fuY(9bS zPfWN`p_Yd_^QhaSU*DDc8NrbN`v@j{PDjua*ER8Xk6*M3G1_8YQB^(V=5nW4ZlGOa zY?lAC2|}1wOZoO4UKCSbt6-b{(`YYyy10`|H=>`Qw(>;OPbhaVuV897uap^TSai|< z4yXWH;Mf-3mqgjSWMR5Z7N*rd!X%7WerQWv!k4=g+9iV(T9az7=Nkg z)qX1Ttcp2jjH*^Hy}CK@!+N9OIwM1|ol@xM_!%cCkI1!i<2`XVBI9Cf?<)E5NM;*$ zsm?453aeO*-Ez`O2#aw1W~AygZ0^fZ(2`MptvqGw{n70^SVv1;)QF`IrqBT{LEM6n zTjWtEHo&}}Wg8f+F1=ppA)++*Qn?0-;PF;m4>Waku`>RdcP$5ca@W;X0o(<@VrXXf z>P6_%f@PZ+-`&0|FPL*>T+?%z%d6QX<{EyQuGAV(WuB8G2&H~}W_rWrS2;>RRdApf zwoM_G`~3m33MM3Ft6sV;Kg0Tn!(OGS#@8EW#W>+2VihpCul*Xm6qB+Jtu<=Z%nwgl zZ*k!kEIcF4&)a`2b!snlWn?x^y4lSws?v&2h1*`4nCZK0kq8}Yv@G!VfDg|vZW~Tf zvy!!1U)4UmAvjAmgliSdn|;TKU9x~@ahWWF_UtJ9)s{GP2h5?oqVxRj3uZ%358bJM zwnd4}3%kUos_M_ToA~~i?6joec*trG&8Q$F&1C#++eGhOHFakV7)`d4b6;fsshh;& zz~T-BnA3jU_9wSUy@cd*$0YDl7! z$j*A_#P^d5JU|BW#Zs%|qB`!-F=f2Mp#tOjtH2OXrvi6p%GcF)Ru+ahe5U$@3=OJt zsPx~pgCTj+*{AOfrUL?m(_iv^>rDEx`fKUiq^-u!%$yro1(S#0ZG)xQ@-jPO!_tcj z%IDfYhqLKfU}I{7+oFejG2Cp87O>bPp`x{s&J5n+sC$z>S*u5vbJZ`yEcOYtH@9EI ztM~N|BaZ9+FwisY_zL`W)U$AwPZ{ziScdQ?8Nc2rsx*D;xQ1P5$A~OV^o5PmhGy$j zyiiJw$06dq?I-z^q0JS-Jux!s^{~?9-q36r364*BtDpp-4k8#cq;WRBF%dfmK4X`g zWf{~Z{#z-Fl75ZZ9c!bSe4%^6u7+M z>D;kGVQ<;`N_tYV^F`L;_@s9B^`8rM`kom|DF!Z|j>SLbqKr+msB*w%8?#M(d7QF> z_VXIT*QU1`MQW(zv8lAHmuAbBx9dhlCk{ab86gUg6xQ!*Nm6Ll_+o)kW!nw83Zb6! zo_5VO3R)3lz0{G0w}-#xRAkr*frFZ`@{cBjms_BcKfo&+@d~4nN3=$sOR#QsHBUU4BL9O%6KxKO~UjjSsU2 zKHv=1NqC-RuG<)N#D?H0m5(_%1BhyOVp?|pcQBu&oJ$r@WXmQ+xGSdu}IS0PIaHz@OTvye` zN^c%W;?=%8`a+Gg(ivZSpIcAz+XbfkdiuFOPnH&_9M$4~_`0G1nd>5`9lP-i`=wWU z9OdlL9aC9UYkv~CVz-tWLyIbh3p2(tR|d}4G}lTe-zpoV380qNPM>r(%HB3*mX#E| znRhoEt7av>*e5jYO-qMl0_o}<>ueU-igXYFlr{j7wm(t^YQ{U_=1GCLXIo*Cy z=Yj?kvX-x+_ZCi9A+ER3prf8WbjRs=JnGf+cqfZN$ftnykS*j+PUljkai($JCo$f8 zSDEkb>nSC&31`%!Z%cL7wVB^KF8_m0S3u?NIpL>OOhQe{HqG_A;X)f>UJ6Qn?9HgP z={f6dD~n<=P6FMrDL%Nls$r>Kh()B7MgF)gVYCAECE&`nq^{mPzje6t3FUlu1 zt`E)wAD(lBN26~_^z)CYuVtoJ#}E~y)4~LA1pj2u>`P-UZ96A(QU9Jg>(`c~%fqM3 zn7||mh&*l1!_RO{$i^S4L`0=TprehHTy{-06n4UNU`y_iK9`GH%nivb3Z^3Iy&sLA zas|eU=uO?uf@eh&N}^5{b;HTBG*7&U$n7&bwj3TQS%DdEcJ84gGlD%*rb# zW8$32n`;FnFIgX%qD{24i=0rd7cfMIhO$B=84Nq|WRz(BgajxEefv-fVByVGu1Y%5m(azXux#mk1C!H!c zK8a_y$zCrzb06FoXom(@((Nf0 zUz=tY9Jxa=joMGa=KW?_v)ql)y>yt1dpZ>*{;+&qy<(%hF~VsA6&On)^kWvxcR{$H z%7mPDNH4t|mhd38RAY|*!X{-j0hVd=C}td;In2?PidJ3C`^5E#1lV9x7Ax>vuSfux zQ<(3cpkln+#ZfwKq@OL6w}E@3ik-DE{5bTWL_y7gSVRyuV_COMt}!OAk$`U$qa=WK z(rEUE_TIl@Rg=@N4dukm-k*uRaD9k)wEm@oVfx7LAIES1klP%rp3U;Vu_ZSX{kgkP z^V6w-B+(UOaU2N2@K4;wia_zWe}iS@l6Uj>W6v#X{zX@~49Mt8fKu>Apa|t3Sf&UQ zx6Y6;P69v-Ms(owe*<(h3+p2)_kZU1h!`tO|0&6y!+PYt~~`aAN)yw{mv^NISt`L)~WpMu$-ad z&e8X(+I5!=VU=PR-ux<{xfIr?w+04oX*bMfQxGw#j&8_HST$F^H$yfwBR;tfM<3k*B(D#!OYlOmM?6Cjath)hTe@K7%sR@ z8&+GsJ@uOeSLZ`X!;wt0_T=%Y*A=~rIx+hr|& z_F|`BL0~8Edij)GZRta}mvXh&7;VNE+G6Np@iuTX`I5@TJ2KU&5dtNKw!Eyj6 zsi2>M=-T~Jd?i@`CJ(ofj5=wP(K|@spKeO~%H(dVYk?xPypGSNS+ieAbz4l7>Z+puwBw%)jc(3-IbySO0MgB*8M=Hr*XNo1&0Gk0iScDSE968at(QDRVnzOWPN3h`IpOJ!`$Koue56>iJb z#?gHW>W^Iy3X^qucv?K4>G-8 zSrV*NLcx6J-ZEep-_DfTUHM$kx7cezQATgx@}0n_q1D*}X(QCJ^?4%T~8a*}N@osR$&fqkIK`Nh&r?iZ3KG&2P zyhF36hoE^D1PQ_X#zPqPp538L96gi?UA6z?z6U>V5Zwc1BudQ34Ak~5nPVajznLUU*o$WkTOigKC1!NbQWbm* z#Ng$W`5T42iD6S0E~17OsS#GY%4!M? z_b`;L`^zA`=Oq0>6akWqFdZO7@gJ}S3AjGSWsb&!fC}Ug7mz1k3;cIfAQ18=IAAz< zMnq08(WO?t(((X2Abh?@SRyh7JWN|{gTEE=^dD{~8Yr0SmQ(tLtcK1!w;krp;p@;4 zUqM@m!&+qd|IJO1SjGyCL~O_%dLwhuaBtTSN;nH`v%E!&yY^Yah25y}ra?IPDS6^Pp zA@sMMcrAwrUD^OGHZ~^^ZMp|P{c*vEjIN)#lw#krvN~8H7L8J6oON6+y=~$4i*^n3y{dCAeV~_+K@K~j1<7#AqEB>p~l_89B{cT zXUSZyh`qgkU3|DZhZlpKuY-QQ;6o@Ee;xGWEB%ldQYyD;dOus$slfzW-W&A2Jtu)b zFRttu*}E(+BvY-#+c4Apt^Zq^6$SPOp~dh^h(WS2+$5<++LWHm^7#YGk?BZWOqVWu zZDVrkQ1oC6&ZpP`f+SYhwvYku*R^+L#86A&;l|*EG-|h~{P}#(eJHpH^Ew z8@wF@0|`6``5t1Z+M*{k_5!gp8=sFuyi~rdVq;|ZG2y`!won?xvyG+IhlvViEclMBA0u9uAu5?#w*p~Fz!o)#$Rdw!=-e`LNRxVWfV zb4C{_VL@oBx3V=r%kmbFj45v`V@*01JXwt1lK?w?qCFzqaa?7LAgFd!Td@-5-1=cm zsNsZ4gTdVUlYO)T)Br>Q&;j^C2h$`lru!LD7+k0U5b)r%9EZ4&xj{MZ zuHDy(6-rHUVo4Tn?2G0I_%)hE!Kd>bxT>-?(lyDb?n?b$VNHNMklS<+27$-gJ-v2z{r@be$_> z+fQNdOkdMSImBFiOf6yWL0rt6gv;0T9o;m9&2y-{ zZ5SicY{OIxYT9z|iSx#u_kP@SM40j|IQ2o*NC>y5e2nC2kMyq2OUf<$M^!F%4R2E{ zqwxOdN%H|0T(s!yUQ&rAah86MXl0mmA?z-fAVHWzk>zM9vro2*Q1@cY4ds<F)ccdIda-4}N0c1By#=%YO$TB=K^R3w zy}WEOjd8mQqK7g-KJtHL;4ty~A51^$#RxDPSHr){DEG)4mrAD0!a8ITocWbuS?eaZ z!c`j9!#i_jB^|%aJilCtz}UrsoGioMEKoyFSoVD3YTEt8zFuJC+TbXp8*{^5*sML5 zJ=$dZUGX+WFKWLKn^y&*2AOjQdK2+2w&K-6aMjAf;!>6ImHVdHVnZpj-0OQs*v2BYsRsYezPs-a+&?!_!W_lyX zYzZGm&|?&Y2m+=H*;Co^hc5x))jCq%t`1W^kqPs!&hxmR|G2JX<#)*=3VW(ljgQ-qJrY#T|3CUi4*WcT1Wu-wlALcPvU6_A4q^EbVG~R)aqpB z!@Y`$?1jfM{6|$yR_$y|d{`TzKh5&DRVTh>{CuQGV2o}sMxZl2`5dE+U{|<+fbt!L z?vJlCnF~3+&0dj(h6>tc!GD3|&TWl#FdyzK)p|WYW^xT$dnEhxdy2OZ5K2hfH$aI3pxWy~`<9B40%TC-K)T|KKr*q2;)c0rCNzo~EOmML}x9tnBG{ib$ zemG!7l)+%}ABI}i&^TV}kjF;hZ*R<6__*PU>A1ZHqg!meNuvQRy-xJBOuWMb1Q-i} zMBeFk=yZR_*42N^3+UsJS-c>phfFp*;Pm*-64XHZLZr$&R5+vL+?wy~8=B`2ju^_v z%!3&4WQ|vH21+0${Q* zLKg^;#Mdn2w+`y^NERQbTIWH7B{W?ZSCs&eH zIA8Skkublgk;;sp;R5pyM|FGa?%UkD+$Jse>r|UG?Sm)9c9th62#IpGUt)z>CkQd; z>hzsH`EKd z3sJb*!+!oI$PUpexoXQj+`o8png6$bd(f(*$>oiV91$iXFNFs6yg~E%qEQN0oY=1d zu^;~#wg$@`bamVpug>U6@7;#2|Co7?XkKdRu`3B^VSIM*sbG&$3D1Zr-}kLNpZAh;$Oz->W|}a|g*d|C zRz`Mb#IB|b196pMjhmcTQZ8e;1nuPl9jpEoBsu?LNp|Q?GDLcWBc%BU^U^OcO-1L8 z+Wzb+xthq9CS2Nk86m#xFxSgvh8k3Y4@zKS;jXlU-JKaeAPEj6xnW|h3@Sdh-48+t zceF0z?C6F0{5g#9ntgm{g_UlY(cA=cX`c%YCDP{Ku!u_*4WcHDa!=s6oIl#nRTSP* zil^K+Oa}cx(u&(lz3a3rahf-DMQE7^$*Omq$KW|Ql zx9wnJWaSthmZz-;Dq5{2)w_3?M1V+ST#FgyCVP&ei|tu{hk`Hfk@qz^;Z^<+W!@xT zwES{qsh97i@*AaIwfQB_GemyLzt4L=HWcC(gM^*SZ~6GtEwg!4&5Zglo2#k6hY&zXA!lSlw zU3<$dd65+)fbz*1{(+W(c7tc2)i0Vm=aq!*mlAqA9iXX{Ce@cdehE27tuN|ykwFL+ zc{S-wT3U|r>@9sU=5pIrT`SYQ2b%g9Dp@Ywb@6H93~|lX^lwo6#FQSCGUZlWXUZTH zxY2k0_r|)EbZ1q{>Mh(h#gxq{0lCNKMcsPViQOfQC`HNOr{3y{_B5Wp!7stgA(Cv` zz|7%j=KM7BE6BDtcKRMs#^KkU`!ZZ*lOMJ^W57erj+LIgY_PNF%64cdBFOB#tHf3k zfWqtv96fBb)B)2UV_YDOZ*z^J`n%Ev@gH)>T^~xA3*OpC6-ur9_}-t2^45GvL6+ZQ zR)!tWJv6@yN?=ttSO`O@@>3>8?zq4E(@d5#MRw&n365XCsVO1yME0gZgEwn*$rIV! z$k@UNi%(C~N5tQJWpn~zU6PS|OXX3DO;(YfYj>EJHf)U|v2=erPgZn2WmEPy1FnZ$ zECKqpy$rb?Hqhso?_Lir$sjb#9E9u?+JA)~-G6C}2SLK4i=P{95oj_EBXdE~-CB5H zLw7f6nM118RC7SPPgCjViKh%A&dx?4CCHDn&0XC>J)nME3>4QM!;hA(RGWKGAh8nb ztP!@UI&J}tq4hWhFG1-V0sultQwj0o(Fq^jyzTzMGcOp7Ib0chzJIJglfQ-ba`U#_ zKuctF+JHr^4(=Xiq;cGg%Oo4$XP)Eha?WC3qow%m>8cmG^fpv|Wg!K=Pts#Pn&R6l ziqk+$s_9w|5eLMYeRn4;BxGqA*?DhcZrb{d4}Cx@2f@NyTDVBjLEOVOWZ!H|M9@zQm#cVGft|xa2m_ z{#S{v1yQ>vSgBJ@pEw&s)UQ5v`&rS-9$#B3%x$do2H#wa7?(Y>AFh(C1D!ijiP6Rc7kqryj==g zL#p2AZp{q(LFCOXO7Uu6WyB7oiRb*DhETGO9yYYN1>~TZdQ8I*s|S%jdQlRNT$B87 zG3P=3Pz0D@IBlxBa@RRvF@@g5lOyHQllCf_3uz9j;{9sBX)Ljt4dvpA^G{j}1LmL9 zW&|I9XJ%yRSh^v*do9f~MZttc$L0%KZ83&rqp=r323y7KrrsqUMPgP!+@Nk+97kSDz0Ga zOb98Uf~6pfA%%(9FGJZ`iF_T4cI}$d>ens&T($z1Bh|}O5D5_LV{4MDXI|&Bj;ai} z%^V7bKziqfhCiL7g3!$1Mw_!4g7x|(YD9ljT|A|8$l&O{cfrzNNhrHtFU4uPlO^PP zBLlt5^#X#z=T@WXH!5g(9XF?@g^r8v(Noj>UbU)s5ZieX4H$N&Y|oYg`YPzz`} zV{la_PZAO{q5h`?%{7IGmFkz2Tl_@ySj zARBMIU-%M3E&~dZL#`8kUel&|^%!#Y9y}ikH12-T+$r~ z(mPY~W7~rSL_%Ht4}hTEBPRe+1t2~0O%t!44XXpw=PE?z zliC7=FI$^$`S;J$>ik*N9XGBe*a|(?Shg6`w8{8uWa|544M17fm51Z zH@#hWX=*#SWuml#x?Q;Nc6SBj4Vakmq14q$ltHrJYtI$Z&t1Oo5rR3WVNvd#cWOar zB74@rOgETA1P(x&q5$&H&SPbvAoxOU#H0H*g=Zv7%I|SZkAD9Lt#4Y-qobMo27gmL zq`27B$Yc}v`=s81GoYy)sFUC_gc;BgU-q>2&oXs7ose8w|aSrE~3Wf!Py8sYku_7*;B;73ADy%MC{;Ux`i* zHY+F|Mt)){G`nsW;{{PL-vQcK=n;K+k1Pi+T3x_q)C3o2;0(S>Crihb)dj3MlCebpB zZ>4w~@^|g6oD`8GoY>2ZAyp~7RX@`-QuSxq_+}8QcOYO9LSx(>Ha8pOSQmgaUozJ^ zdw+%E7rBf*X0;}u#tb>^(wse@M>Gzo+m^)4{wB^qrke#-T4$IX0?4 zYjD=!H>|a|gw3ML@8ej^x>iLQOJXmJh^ugo zd$`o5%7BNQW6XI~*={d$AmX6lHHTQJ24>i~4vToRWgjUVZ$fb>N*6^J+bXjtrAFJx zS=5TuvVNS`D9{MQN7-8I`1rj>7mR$e>yP(A7#~)B`i*V~gY_y~V6_?ipxW$jHBjR| z^FcKb$laVG0Y;-HV9lrPLOc7Pau3IQwech8X5AU$_WE`mIXgGi{j=9)){HD+m;FL_ zVCxh!`m~>zhkU+zsg=)uuF~Kf{j}s`{yu#T_in0v)HWAJ3x{I))Gc{&mE%BDVD3@ zfohR_NO_2g^dF!i8Eb#YINfNk#wy5dV%~Lv8AT9;xqts9UihOJ32@Kcz_)`T+d;zW zpvLh|alYrM0WbrMy2?2Z`gCVvb=yQQ*9- zEPwW>$Ss$TvBGLWLW97~OYgRFlb@-e1kFWx(%Bq!G;}M>FIn-&5ljP)yBO~3Vjg;0 zLxXfk0JsJRp{#-kau;-t<%_G~d(44v+;b6*<;t08>tK5}q^$M{f!N~G}&E?Qv(cz2G5~Gv2cg^am2UvQ7m3(tGI%|CP z$dh}GEb6_Gn7A4UlPd-8de-N`x0yNUlJ~4zu zgZ`P|5ePYJE)Q01-^N`l-MkG_FM0NJxpXr}&J#Ww?j`R8@m`zeazE9W=Ae9RTw7J$ z;nxuT(-@&F_sH%C2&Y-F99nAh%O*eQGRDEhxX5w4f@&bgjIjugJ(ws4IFa ze04#!wtT`)sN&WRmck2^0}W~qRc+MS(iZ0A0qJkyH<~u;?WwKV!8ottX}L+PkhjIs znMQiu#-55DhsKB0G5W8?q$qPeZ(T{Fzr;A4*fU?ppwZbS>_x3Ids!7dO!REDJh^b4 z70>ly)_VO-w(HAiFx>%)g2JEj^V>gr$aTq(rCM@<`9EdJjr*Lj2Q}4!2xIh3XKznn zSuH)D{uA{%+MoaM?7%~YobxR&C6|9uaV^Fznw5c(>%R#?u^cvoTB3OFDC{Ri+H1s{ z@soufOj*6*LT(8op6$W6*T_;&#_B;dU5 zU+r=Kz0lN}9IQk~D?+@}`v$*McW88CRi+Fjmnjnihys*{7;FmI6Qm4fS|6Bb%fc40-a8^& zpQ!m={?En#6hd20gE?hY%toL9O%WpyXcGV4v8LT(R^w^xi7M-%bfQVn!%nsf=Y!ZJ zOH4I9@|V@6N`(g!%RQxa>WU>Mexn~!VF$ecodKF3)aif@8P%++nmi!O-EKR`JkwFF(`4_9@_CnQ`aQ zhx(DyoV5S@2xKBZSx3I@Vi&BuISFxDITyBk9^bNhuHW@oh+Hc4L%_HP!Q#5|U4}fCiRfS@J-zHmn#*B0zD2+t(F^U#)oT zu#zWxO>lf>P*r6G@o_l?2l7}6DJMF~?i+ep5gZ(bJT?Y!Y?vaR0r=Q0Vz=eyDtMX! zoE4d!wEg^sDEOUrs%v=9O%;wI*x)K5~w={50?CJS_f+j zqQF4_C`jNxGynxD1^h(24T=sDd>-@c`_{UA=DLXQ1Z(Y*PU$N?ajzqtj4!=CWq7_F Tgm1M#U*!PD{hz-9NCW>1<>tIM diff --git a/Tests/test_file_blp.py b/Tests/test_file_blp.py index c3540f4fa..67a7d0a0e 100644 --- a/Tests/test_file_blp.py +++ b/Tests/test_file_blp.py @@ -5,6 +5,11 @@ from PIL import Image from .helper import assert_image_equal_tofile +def test_load_blp1(): + with Image.open("Tests/images/blp/blp1_jpeg.blp") as im: + assert_image_equal_tofile(im, "Tests/images/blp/blp1_jpeg.png") + + def test_load_blp2_raw(): with Image.open("Tests/images/blp/blp2_raw.blp") as im: assert_image_equal_tofile(im, "Tests/images/blp/blp2_raw.png") @@ -20,13 +25,6 @@ def test_load_blp2_dxt1a(): assert_image_equal_tofile(im, "Tests/images/blp/blp2_dxt1a.png") -def test_load_blp1(): - with Image.open("Tests/images/blp/war3mapMap.blp") as im: - png = im.copy() - png.save(fp="Tests/images/blp/war3mapMap.png") - assert_image_equal_tofile(im, "Tests/images/blp/war3mapMap.png") - - @pytest.mark.parametrize( "test_file", [