From 124bee04852f158146549084a6b799e7c04f6d7e Mon Sep 17 00:00:00 2001 From: zwhfly Date: Tue, 29 Mar 2016 18:56:37 +0800 Subject: [PATCH] Add Tests for 2/4 bpp Tiff Grayscale Images Including inverted and/or bit-order-reversed formats. --- Tests/images/tiff_gray_2_4_bpp/hopper2.tif | Bin 0 -> 4266 bytes Tests/images/tiff_gray_2_4_bpp/hopper2I.tif | Bin 0 -> 4266 bytes Tests/images/tiff_gray_2_4_bpp/hopper2IR.tif | Bin 0 -> 4266 bytes Tests/images/tiff_gray_2_4_bpp/hopper2R.tif | Bin 0 -> 4266 bytes Tests/images/tiff_gray_2_4_bpp/hopper4.tif | Bin 0 -> 8362 bytes Tests/images/tiff_gray_2_4_bpp/hopper4I.tif | Bin 0 -> 8362 bytes Tests/images/tiff_gray_2_4_bpp/hopper4IR.tif | Bin 0 -> 8362 bytes Tests/images/tiff_gray_2_4_bpp/hopper4R.tif | Bin 0 -> 8362 bytes Tests/test_file_libtiff.py | 33 +++++++++++++++++++ Tests/test_file_tiff.py | 33 +++++++++++++++++++ 10 files changed, 66 insertions(+) create mode 100644 Tests/images/tiff_gray_2_4_bpp/hopper2.tif create mode 100644 Tests/images/tiff_gray_2_4_bpp/hopper2I.tif create mode 100644 Tests/images/tiff_gray_2_4_bpp/hopper2IR.tif create mode 100644 Tests/images/tiff_gray_2_4_bpp/hopper2R.tif create mode 100644 Tests/images/tiff_gray_2_4_bpp/hopper4.tif create mode 100644 Tests/images/tiff_gray_2_4_bpp/hopper4I.tif create mode 100644 Tests/images/tiff_gray_2_4_bpp/hopper4IR.tif create mode 100644 Tests/images/tiff_gray_2_4_bpp/hopper4R.tif diff --git a/Tests/images/tiff_gray_2_4_bpp/hopper2.tif b/Tests/images/tiff_gray_2_4_bpp/hopper2.tif new file mode 100644 index 0000000000000000000000000000000000000000..70057219aa1a4f0339f62f05328f00b4061bf6cf GIT binary patch literal 4266 zcmai%&u<&Y702JwBIS}OA_t-Z(?xUfArj!^PskdzQn;s;!P$b_LuEir!T}Op93V(g zlYasecm;^P=%6LMW5Bv3K%D@h{{$b}9CC61yGWcva&Q96hB*1Yncd|qB{&bz?#z7N zuX*!hsjFAl=McF6hVNgk%b1E!uuYm*+Jyer`xx^yZc) z+H(pS_lC4dJzD*u+bk=%{3CDr)$}D?F8-u{{5&Z+aO^$U9(FdSv8%9P6*&Hd_E+P~rxR}uEt^|5#G;>G$zy8#-zIe$;5^r?PMef^8$pm9VO zt^M}%fWFo*{D0^phrjiV-l)Q3y7HCJoP44Mkz&ZT)L(5r*K7`hc zSBX}uMT*xMg9IM#jgQb%^^=J8g zx0i7*EbNuTe|=ypw^?wc5fsxGdT?WbJrq0+Rod?53ZeEtKF>U;hAQC{Q34V4a)n6y z|N0N}A$T0ZH(xOAZf>viu>Xi?nS!QhQ#Dd)C_gwS}38{0@g-7VVX>g|OeFKJ0zE-W5&GaU`($I{=vk^yVXK z5?zPKb`v#1W{BLI@i(@NeH;oADmfY_QbkdY716~7YT|Yg5pd>Lb{xLR)nT5%N*W;T zi`!(bAHooEb|b&5IwFX7+dO@OY=d1%Fp{RCITI$7FB{hi^Gj z06ew4e2#xKrGYUNPI8Yqub5#Y^fJlvtD%dxQq{yp3s@-)7G46U@)>n9T~==bOjy zUd!e+<|-Dl?}1m*O$7K@av;~kzURXp!$}9;`B=!3{rAkP%*8wQdQl~w<~;US5XDHC zH}GDsWcE7&uYnPllQ+PnkI-?#S;m-sTH-uE!_@{jAGh7Q&p1o<^g;r0ZP&_5Gqy&;sVKCAQUWOf^j`mVqjM(VtA^?t3mr0N>$#t<-^jR_JpPhxURpV}1Pu+>}4l zQEJcOZ)^ShuiBKq;QKRg^p<|?Q&Bz!xGNq0I#0cS-x-68#i92x5obKM>r@9ya_fKq$0#7zlqj(f7PFZb71el zrZeL$<}LnRViLb=w_{fboJ60I;q3o5dL+%$ySKZ$lSspPfIlCWuWq7CP3CdrquDYB zxMD3oZ_*Z`*Tqf3su@RXnY&dV4^M{UFB1{+K)qZ~{+Lo#iE(l|XA@M%3zmG-oVT}w z&a+nb?-1MkUH(VJJ7W&j02ZFpu4L^B#?NGJK0!67U3c2&yanUuEOcIV#+y!iC2Od@Wvx+vyL^kI68#{UB-2eap literal 0 HcmV?d00001 diff --git a/Tests/images/tiff_gray_2_4_bpp/hopper2I.tif b/Tests/images/tiff_gray_2_4_bpp/hopper2I.tif new file mode 100644 index 0000000000000000000000000000000000000000..9feaa08f0667f274342db70b1892558034a8553e GIT binary patch literal 4266 zcmai&&u<$=6vxLQO`#RyhX@rdf)fYe&_AJ$1Vz9ll{#B_bI1ip%2wb%Aua+T(Mv!Y z1CG>iU@dkmvL_@6sLP)KNG*q6K&mU^NQ8rpVh8Wz`(}36vrbf=l--&4dGF1eH$OJX zn{U1%9(_^>vhs&VTld9zeM~ZbH%PWd)fbOpo$-F-Xp1&a)9qP{jQ`c3E&63E)!i9` zjHeCSrWW0OyWKAvxcuX^@_OYVTpd0so_W_V1#tXR_%3yJDuHWoWDR)y`*V|}#ibvr zr7HY0<;}UYDk^cc;`;xc&;d-~e@o1z%k%TQRpAaWSj+k6!lMtwDQb!{PJqDz-Lw9i zr($|d%qL%o1&9B9ntmJ80pf4ILUdIu{*aausGg-?TeJ<{jK_4Nx||&J+ytu&yev1t zZ=~PsD_?eR-L5+E|9mz@h>vuGKAXtus|R~a%fV(aH8{L}UtFXQ8x72{_Dp4GbAIu1 zZ^z-uNL-*B?}5|!TVIElV|6{9@=-#YXZK!Dm{US@q&=t{PV}p{w`4in&?m5(@-flf zF}ZvnHdBt6_YQ1+?3{_i2^))Ua{i8#cucf<@DL8a2EoXYl0Wnb58}uyH%U0WUl`=d zZEom<#+r}R$vl#Q)=FMKi6g&}wBnt_F+Y`Y89VV49v8ArI>$0__{PC;?j_UwURcd| z8WsN1;g4OkmD?^j(uj-cYq4?jh$9p{h@{tTqx44%~vuEb1aGO9Z?^*iw=RaxT@puZLSV;A707;WnbJT zbNyiaF!WT-g9bl!mvi+{f9A|sLS|jb z^71+H(NqQoFgVUr=DcEt)zQl&%Ws4(7FS8>=fu7<-a`*5ph#HPY?j6#|qomQQp9N zcar(9$GiqcTu$i*E`1Cg_?%^c*?T3<^D|uTfb+4N;e_MM{xZn6wfBV`#ymlB-63KS z!qteoe0G2G$yrlD-Qr^$Czkn^-FCtBaKWC#kGst4zHbb4%MN3oW_T3U>&S1gw>;Ew z3)vRJoQv*-^&h=muK(^zQ7Bje^VbsFYHg%$>)lvKE7@){F~G;V+wFLr?oeseN{1_? zity}@n@xkq;9Ud@uTjtCW89bhj;Cp;0*zp5#q5X7gs2A&|AYqMG5FilPYLHIb-&y1 zbcqJI7$Nd3#w;?x-h`L=XbpM+bH$w3+6Ya+ySM<^A9tYESD8~@BXA#|J(j_G035yZ z1b6ZpfO{C5W$^ME^UW7cZ?A}t@12p+dH6>W?qef%m$AR?)8QFD-x~M56%zq`HRp5u zRf)uM@0(?yNmBHy6}9%c%P~OW@TQP*S)4BHxrhyWK^a|BEP|WzXEsu< zI{YUgPJJg#`3t@>jYdC<^9dE@V}QHT;lK0Lo0lBT4Ckr+zTxmYn836<;M5Ks1#e`h zd&n#26lg7V@F&Tb0HiRmHi7@u3jzdc#ze=8NeSyE%`K_b|v# z=t$sin35R(VFjNTR!^!63BPgUWp;Ns{%`>Yg+W@y27^qr-sU&a9o}EVQ{X&sx@^;# z@*eXZ|6XDezhbvzTWg%egpuJK{~CIv%rm{bwzlpo!&$+f56kavqf33}L71S~GY+_7 zEq`Fr*1FZkO~R%bM{A$E;{=aXMYXql9kF6qt|xy?X)JZkKbf-&s*}bCiD}OITcz_H zmE$|aHvgADE=1)KQ4vBk@l$cyb6I;1`bV-h+bv{mG{qT5|5Rn(#Ca6@ryc#G(|$Jh XMWAz;y}*AVo_B0sMw`b(Hs<*sCcY69 literal 0 HcmV?d00001 diff --git a/Tests/images/tiff_gray_2_4_bpp/hopper2IR.tif b/Tests/images/tiff_gray_2_4_bpp/hopper2IR.tif new file mode 100644 index 0000000000000000000000000000000000000000..46241695570bbfe4a0193cf2ba2e882e5bb4fd32 GIT binary patch literal 4266 zcmai&&u<$=6vxL~el$UdA5y6*fl`nl&`bUTL^xKxK*g+^l_E!#oZ{_)Q-B<*b#pUFj3{J0 z7}7qq=<+W!^{Rr+KMvYA+yBGkiR0qkpS_9$%RYeZQgfm0+6p^Hf#Xk3_m^%h{pM7v z@L9=g(}5$}iPN_2UrK2YDzIM^)4}-Z)3c7S15C~5{FLzNO>u*2;v>t!)Eqr9_G32^ zdP|&6-xhNgf8inh-Jm`AANz#pjJWk%P)WeKOXpg&4_-?ebk!M8_j-1M&Kz&cJ@Bi+ zoz2)&gT*V3<^SZT0bKkphxAupIlu0$E{(fm)&eFrCdDKAVK~GZJMXp^#!lb5*jp$a zOr%|LpRRrmPK}>D8C^``jiBV+l*aC^-b|TOO0*+=Oj(@hoWHtcIP1{Y&? zz6qU@!{>uNlOG#rVsS!a(LK)Jk_u0V4)*?s!){1WvZP{<`ILiLGRk!l7B8DPpVam; zrH14qbuk4)wE3yw6BvOeO;y&dg8=WeL{K`U1XMf&?C=1C(|9;e8?nY40+NTeVB!F&kr zhVVTAAI#+TN(^iFi8d*z%Ka8!GM^rzc5V=+Izqho#8%i0fc&+2bDvENfh#u@v9k+{&fHS{w)8gDY33CrtCT?7WhrQXr z#VGRQjt@Kht=XKbhy7*Fj3qkEwf(ZDs;_Or&xRAx25ZSvNpRldud-FsM{=5Fa6qiw!o)73mE`mm7MerCUt zbn{7@Q}6_rK0>=5XX#?~eueY;G*=7YeC$Rz>a)rA%FWu^|2_|dZ(UwKS8fDTE%x>q z&L?L+c1_#(hd53w^DWbMZZq?vzu13czZo-&A+dTR!Tzg=`C9doH>k zt-bHha{Xtwi$XyQ7~v(_YQ7s^k+X>mw}Zl3^M)J@ntpSz9!u0pM%(30t~qWt37&ut z;4IoD?)FTOJ?_hT)0ea!yAn_Fw(f_5_rPJF(iC_C{!95PVgE|j2leKFXbKl2MBPQs zXc!~tO<3ud)>M!0W*IZ*z1Bi~@BuDBw%0$+&M>FEM&KS^dn{8cY#+Y!4?pBJ0QV7_ zW$N2`=3|fbQ`U{l^)r&b0Q)e+eXIq04zc*eM|{2|?t3HJ19Z=eXooX0JR#7~MtC2opPSPM;zum-Sz%TK6hwutchFTy8PLsQU?}4Cd7?5gf4%< zw@Y(+L0m|wC?5mdl@@=VmtHH%cbN0io-fvm2i%M0@@R@vo3JLhk*&uG-njsOh2Y+` zxivN_D4;bL6n6Qb%6WDtNBX;8u}AP_RpHnGdpXn<<^nB&<};!6CkBmOKIkE(oK2z$RZxAn2SqMOZp%=K7zvlH4C_%}>N3~%H0!qa_c zPL~5WUZ!_j+t1;kFbEtp80$%y{hq$f{k47roC62rru-%EG4Cyd>%^D&kqAHka1z;- z;p~5xL99Q6i}UjOne@`2JNvADkYX&z7JM3wPJlf=s2HOO2 z*g5aXkSErw^$eIdlfa(}_*DL)5Vd2XCWL6?uV#&% zZ0unEST<(8=dv+|V%*YsrS^>Wa~$)pTKXrf@oTv)9G%Sc1^yS}bxY?xj5#K<(VzbT D0104I literal 0 HcmV?d00001 diff --git a/Tests/images/tiff_gray_2_4_bpp/hopper2R.tif b/Tests/images/tiff_gray_2_4_bpp/hopper2R.tif new file mode 100644 index 0000000000000000000000000000000000000000..65e0f623e2692b7b3b5e346198169dd31bb7f3dc GIT binary patch literal 4266 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 literal 0 HcmV?d00001 diff --git a/Tests/images/tiff_gray_2_4_bpp/hopper4I.tif b/Tests/images/tiff_gray_2_4_bpp/hopper4I.tif new file mode 100644 index 0000000000000000000000000000000000000000..5c3a17f52dd7e19dcdc0e4ba00bc07997f4a0d1e GIT binary patch literal 8362 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 literal 0 HcmV?d00001 diff --git a/Tests/images/tiff_gray_2_4_bpp/hopper4IR.tif b/Tests/images/tiff_gray_2_4_bpp/hopper4IR.tif new file mode 100644 index 0000000000000000000000000000000000000000..7652f5e6d878fb2fa7b52f662330891f45bcdaa1 GIT binary patch literal 8362 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 z zZ~KBRX-RyI8T*~7V%S|5)AFdT9A<2RkT(4wCmQ7HH(m941i*LWbZqaFj0JvWCuKR0 z%!-Vro3-qJGxp~c5LD8o0tnBiY3^Z?ax!!}HifsH!aiF{r8{uAnoh+^+I8q>^Ej5) zX^H-kvMa!Z3@LbeoJ8)vYfI_$4BiW;{b@_vPI$)MVn8-D;0`tC%A3Q`oyR4KN8Q)I z-K}N3WzKYji@oWTqYT%U_=2rqXK@`+69W9HQ28s@e*ARQ-a2=WD3U)d7klMY(r*Q$ zM@WB#vsT0aaj+Xkp!tGPZYcr_{p4_WH61G|j+m5ZMq??QcaL}CWL%}Uu?CjuzYtLS zwg665oL&=&jz1O0Avq?e@QP_kC!*C>s*^o10H+bH<^ptFK-s?qcx?>Lpz@=K79_m> z$@s>QwBpgnYGP@~e8~;t68yw3P3o$ASGAt8&n8<*f6SjQC9P+o4^eNOcsH%AS`5&5 zA(NTdTI;OT?mH4wjyMK9z3d-L{A;bbdgH7IZy41iM9Tr3@*Bq2@x#9^!Tvea&-9_; z#NRBz!wqJC%>{%HU8$Sh81~cQ$!5!n&B>|K+%t*9-!?jkA!WS3>Hx6sU0kl6vF8&* zzi^!7Txv#44G%?+60AY)jz3?G02<$WafN#J-rA;5N@Z~_CQCb-gvkcfWk{XQ+TG(U z*jHcwc4V$yr&{>T1!!pwE!J)zV)_EWPi6|7dGnh4?P~$3b-Uew_IKH#|S}0O6O`o+YZdf-fA^ zt!+uW`=GP4Sc60FuNHk8q}hhLs(gMO>WBVqrQ~}pab;CJ*Y}+Oe)4sGZ}FkfgJzxRIC=xH$fp}!j6N-bk>uZiFf10VI(!_R4Z#drDovn%6}VklK% zgO1cSlPA7z0sj+}fP+sm?hdH_y6mE#eGR<6Nw}kA1F93N)cX${6QU=N@aiLOv(v?5 zv9;do-Vfl6U+e!u_`afqa9Vz?ZosMSiC6sf^oJL|mSs70Zi)S0EA{&Gaj5fPE)>8w zTlxw_#M=X%Wt@*{0G+)GynKEMeuHAXTpithqwSR(KDOe8^FOOCjD7KlMxWHG#P_FT z$yk@u9Ge+U*K_8SV%(~B&*nOPnqq|T264r0;Y|O$&$+kp_8dPw)-rbb=Z`z71+~5* z>`~MYtN8Y29P_Gg%vC&^|F~trwU&O`Q^!t^t&>i#J1@nWl{&s%scFNAL42l5;oV93 zs45Zl@vFD%EbC4;%W*00A4{cXf65l*tXCr4+c_DOYdoSJ#WVvb< z`nX~&TizA?KS_h;|HEam33YE$<>p}j^;9_)BYZu^in7}BB_yxg$?^5nj7*#J_|V7E zUZGwhrQyozv&T+e?|?M?x#?VKw8b0Czt&b^_c|M+!00A@BZEOCp>7sq{SAC=aK#&r zUS9tPzCL|+==TL-&G&>gRB3RnS;XI0*g&*L5cNdL$96ZT`HSX{K0JgsVH2?qr literal 0 HcmV?d00001 diff --git a/Tests/images/tiff_gray_2_4_bpp/hopper4R.tif b/Tests/images/tiff_gray_2_4_bpp/hopper4R.tif new file mode 100644 index 0000000000000000000000000000000000000000..0cdf4d26e3ec7804048b402db4966230ebddf197 GIT binary patch literal 8362 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 literal 0 HcmV?d00001 diff --git a/Tests/test_file_libtiff.py b/Tests/test_file_libtiff.py index 313fb545f..36fa2496a 100644 --- a/Tests/test_file_libtiff.py +++ b/Tests/test_file_libtiff.py @@ -421,6 +421,39 @@ class TestFileLibTiff(LibTiffTestCase): self.assertEqual(im.mode, "L") self.assert_image_similar(im, original, 7.3) + def test_gray_semibyte_per_pixel(self): + test_files = ( + ( + 24.8,#epsilon + (#group + "Tests/images/tiff_gray_2_4_bpp/hopper2.tif", + "Tests/images/tiff_gray_2_4_bpp/hopper2I.tif", + "Tests/images/tiff_gray_2_4_bpp/hopper2R.tif", + "Tests/images/tiff_gray_2_4_bpp/hopper2IR.tif", + ) + ), + ( + 7.3,#epsilon + (#group + "Tests/images/tiff_gray_2_4_bpp/hopper4.tif", + "Tests/images/tiff_gray_2_4_bpp/hopper4I.tif", + "Tests/images/tiff_gray_2_4_bpp/hopper4R.tif", + "Tests/images/tiff_gray_2_4_bpp/hopper4IR.tif", + ) + ), + ) + original = hopper("L") + for epsilon, group in test_files: + im = Image.open(group[0]) + self.assertEqual(im.size, (128, 128)) + self.assertEqual(im.mode, "L") + self.assert_image_similar(im, original, epsilon) + for file in group[1:]: + im2 = Image.open(file) + self.assertEqual(im2.size, (128, 128)) + self.assertEqual(im2.mode, "L") + self.assert_image_equal(im, im2) + def test_save_bytesio(self): # PR 1011 # Test TIFF saving to io.BytesIO() object. diff --git a/Tests/test_file_tiff.py b/Tests/test_file_tiff.py index 26b6bd4c3..f943d8c92 100644 --- a/Tests/test_file_tiff.py +++ b/Tests/test_file_tiff.py @@ -323,6 +323,39 @@ class TestFileTiff(PillowTestCase): self.assertEqual(im.mode, "L") self.assert_image_similar(im, original, 7.3) + def test_gray_semibyte_per_pixel(self): + test_files = ( + ( + 24.8,#epsilon + (#group + "Tests/images/tiff_gray_2_4_bpp/hopper2.tif", + "Tests/images/tiff_gray_2_4_bpp/hopper2I.tif", + "Tests/images/tiff_gray_2_4_bpp/hopper2R.tif", + "Tests/images/tiff_gray_2_4_bpp/hopper2IR.tif", + ) + ), + ( + 7.3,#epsilon + (#group + "Tests/images/tiff_gray_2_4_bpp/hopper4.tif", + "Tests/images/tiff_gray_2_4_bpp/hopper4I.tif", + "Tests/images/tiff_gray_2_4_bpp/hopper4R.tif", + "Tests/images/tiff_gray_2_4_bpp/hopper4IR.tif", + ) + ), + ) + original = hopper("L") + for epsilon, group in test_files: + im = Image.open(group[0]) + self.assertEqual(im.size, (128, 128)) + self.assertEqual(im.mode, "L") + self.assert_image_similar(im, original, epsilon) + for file in group[1:]: + im2 = Image.open(file) + self.assertEqual(im2.size, (128, 128)) + self.assertEqual(im2.mode, "L") + self.assert_image_equal(im, im2) + def test_page_number_x_0(self): # Issue 973 # Test TIFF with tag 297 (Page Number) having value of 0 0.