From 4596706c50787fc41790e96aeaf0249e5e0ab3a6 Mon Sep 17 00:00:00 2001 From: Benny Jacobs Date: Thu, 26 Apr 2018 01:03:47 +0200 Subject: [PATCH] Convert tranparancy to white --- spec/Zpl/ImageSpec.php | 8 ++++++++ spec/test_85.png | Bin 0 -> 23861 bytes spec/test_85.txt | 1 + src/Zpl/GdDecoder.php | 14 ++++++++++++++ 4 files changed, 23 insertions(+) create mode 100644 spec/test_85.png create mode 100644 spec/test_85.txt diff --git a/spec/Zpl/ImageSpec.php b/spec/Zpl/ImageSpec.php index 85e4cbc..7cb7c6b 100644 --- a/spec/Zpl/ImageSpec.php +++ b/spec/Zpl/ImageSpec.php @@ -26,6 +26,14 @@ function it_converts_large_images_to_compressed_ascii_hexadecimal_bitmaps() $this->toAscii()->shouldReturn(file_get_contents(__DIR__ . '/../test_1000.txt')); } + + function it_interpets_transparent_as_white() + { + $decoder = GdDecoder::fromPath(__DIR__ . '/../test_85.png'); + $this->beConstructedWith($decoder); + + $this->toAscii()->shouldReturn(trim(file_get_contents(__DIR__ . '/../test_85.txt'))); + } function it_gets_the_height_of_the_image_in_rows() { diff --git a/spec/test_85.png b/spec/test_85.png new file mode 100644 index 0000000000000000000000000000000000000000..56bc2b93d87821ee90183fdb0ac2bfede40494e0 GIT binary patch literal 23861 zcmV)UK(N1wP)5Nr%s!okv)gw(q1B##+6{r?t1QigiHqjfW7|d&uo807+ zH`Bf0klZBqzTTU7Gni;%9Fn{yT}I;&(TGwAC@3umbOTLy({s(!sWa_it@Zw~PgPe# zBcNbnUUz@ar>eWE_t|@|-+G4M^Lw5HKRk!HmrGoLySKh;*SEIbIC{h!vaePu)7)8X^d2H?6U+}YI(-Z*Efu1gpj{m?&!vM zJ)^Ca)>?eeL&cIfie%?V$#mokH-7!z+*{tm-gx{+F7ZDeuq=oQ74ZeG_V@ISZH5ZF zs3f8dGRv6S!#uzqi?RlCPT(ZjEr z`}Bd+H$SGvfmN&aL~sgV&(1M-q*?sxIeo(~&t!5*VvQr(56+Q_YQ4syU1H0Q5ilm1 zJ3QwcKRWe)UV7rAzr2Srb+&W=M?5N2fC&Ju1ZF9-pPfL3n}C~vo2UT$M7n8bxgEHP z2`hdWfMr1nF#C4CH^0(~9@&)d9uk31wYk!ajqY@@etD$%0GTzX<4b5=SMLv_y=p??PqglVA+N}MjX4ts> z_TjgECNPCtFFX0?^OkXO8>7xB6Iy`nV$lFtYv0_JEjo^)5@T`J?*wBlj-#-#C5{su z$B}-{*ZmvH9nFI$ejfOx^Vw(rBLeDXM&&qVvzzg?`@3uN4YV3D+EuuY1KJ{t7Q%F~ zOT0ns0;w%3Hbyp0OV8Kuh()7f*Mo4+82}r{GR~EZayz5X3SiHN#S#MSJtJ@btBu=+ z-(5|@q}a-+jzZBIYmBj0T5V*j)nKl+R13rK)|I&R_m{tG%cn%8Vk{Lo!Gzq!MDnG+ zpU!pWz56%!4sR=D@;bI!t=~~X2&}anpE*hYj$R76EMRriO4K9YJ~%s5OLkr}^^sXi zMXtAoKir_I2&f?1M&-_PuXU2;rnG{jLuRd#uJy2ZN|DJpIDw0j5`jeBu6j!}6gOQOFmBwpL1nm5!scxdKB$Cf{l`u3xAwzT%r7JNmkBY(IJbLmWT>;By_?_4k;flE%s&W>vxl)WT;>l1Sm(C`!@hWEi*@BW z!j%;LoSbzQXhkuB=c26ECtqKA`|?Wl(ywoR*I$UoD}N5~O~fnn zK}Nccs|~29w7C|HF=@1)#$Kkgt0?`WGuHzjyPb(2YEZ2@pj}Lu$F^N9kJgf5KZ(1_ z8;6>`!+nixcR~BPjKy=(MA#+}CMl?DD=@zdD=jbv5Ef-E^}3dIm;CTK6$$#>SFZtE3Qkp07KVV*}sc=`1h3@9s_Scu}XH|8L7t z{l%W+p@gv7K1HZxEd~o#tQ82g)k@`D;pY99-`e|AeXpAN#PkoVJKVF*{oK*_YWGx4 zb_{RY;Ph`DtY*u_hLZ_GtTY&%0!P@CMG8E~_)y3~Ul}{QfIWOF{dr=I=%Xk%q}cPB@uPta(E1ipthX6=HEwSZMhN}J8*6Q$h1tvc_TYgEsXQf-rt zgJ|0OQRvFE;ryX` zM}H}Dvc5zR6YCgZEK-7yDY&dT{j?kfiAK~K?daD))<N(f!- z$UA{_E(1QldTl?Hpc;4s!?_Ft!(B<%mzw#xm=m$Iv9>5_MBrKS*%T;&2il}N&QZ{6 zVIMsTOLg!ZumZG(lQR%T(AC-I$!!WQVo)A9mhI&nPUv&|&`I*$d4@0A&X&t|ppD@+ z`xES%{?ZxO`Md#Zma+v9)|8c_R?9kAW9aGWVtKB{LUoy*jxJ)IoF!DUXp3@`W4k&^ zI@Gb8sm=?}%aCz>wAE)=ErB3O5{xiNsj%zRG8Rh^cqqqx0l+8|dNpJHA;|m?ZF?{= zbOR&B3>!+mb>k3@)vS$;wP1u0AcVEnf|5|oB1Q(Fvyk3p9Ah6l4wDOz^;1Ae36aL0 znuqBnA$D%IlseO&t-4W@U}{aIgiT!mT6J@B?+N-w2JpIyY`t_l)rC5r8oG)%oE$&n zdY_k)&KNt>MHAAMO0JnBV=YoD21j~Xs4dWFwNO$$X@yT)FC(N>s=vEm_-??7*%L%b zgc7p-f7-t(1c{E3uEcd6u&1q{wFu=Z9A9nS!)G0wVWiu` zbu2c~7$gKPBI8*C$KomQ9g7sORKq^}2 zFW5p7YcL5ILvg5^Vs|H>D~z(6)M`DCz*<`+b*9H@gT)xiJtcyHfKxM5X(9Qn;7V6h zTZ58{q0%665;L_lgLuL^x1ta);~|7>18yCKD#3A`4g$Y?HXv0%S}M{qrY0CwJjtR} z#2&_ED*Zt|-%=dQ81G>(xAecBQdY6CltIcAR6?ZK5!lu5tq|+>lC^2T8MuOl8Z0hD zHUpm92AvPCi;Xo_rWv$Nw6(cRdO~a0Og(c8s|$cEX0fhAHkV^?WC&1TBxF2#H}{dv zx$O<{x#u%0tO%%BD{RdqhBFxgk-9`77~0Us(eNabbJGm;^dm+3Gw~#F3AEMtj>}-r z07s{fll8N7NcA(4D=ve7qq}+ zEDOmrzHlje-Sm`8xOnZvt?>K-Ykbw!SQ;zMD)AaT9 zB89|Q^8|3E_nTNv!Ozjt(ap@_3|TKj;Ch5fL?SfVOok`YT(({BafA|%uw53!E%ZA# zK_pUO@P%zx`%BZ!LT4`1>*H*6tQkOxf`e3}LL|oMB~9yCHA)UHEle)&W_%?D-KYZ- zrt+N97h?#-QMnwmr!R3gBIOsE*?32cy)DTTF)EG043 z1~QBwAG9C8fTbp;3PfNV8nLx(r4v{*;JDCgAda2DXbmlm94tY17g))xndBjRFOk25 z4q>PMF*fFg@ZA(xqfDIPFP>9im6>hdn_V=CIU`G3Z-tC8IF4fDwjqu`KAD26)Qh7O ziP2~EH`*F{I!e@=4W^f8+0;8s7=@^e#1A~|lRybbtP}`iO)d>h|1=x}^@*OB_mx%0 zi~O4Viq4{UnUHq7r|)R26~>TFwAoQ_nH`h$ z#yfMa^RKt$U-y5?Lz7wgLJF3 z6I-WfZm6?$c#x2D&=wWz#6xE3LVK+h1i zCatMC*lC3)6opxr&f!jib2lOUfM&SNz4|uFgE=I1xjvWAetN^sA?x{`NL`#bOEtzKmBbp$^wcc%sTSS&F7nwNq}BM- zz!HEGC@VO%JWVSMQHi8?M-Rnf9-Vu|M`cu$W+iQ~;iWRgTn-#_F1 z&a_-2b&FC+`UiVi%q+8Ta*;5K=qwa*luE5vTZ|*8K_cl(dN|lPjO_EtWiqLR6?;jzT3y4FF6A0W34U1n$$QB%X>{yGHi(~wY4fz3!@&nLdjm7A6 z^-mKF){1rsL`X$YwD=cFS{s&_-dkn%P$x4N9A;~I7;AN#k8FoBO48fi%}VVApZ=AL z;g9a)=22Eftj{gou*$q=a?bHs$MZUjkwSjgoxB>*TVv@ibuzfMk0>89y*x{;(Ilm# zBythrODs!oY++s_DfN^Pu|&EO(RQ2GTBMXHsaUBlbL`Lo;`%I|Ij7+J0wZ){jIm*2 zmBmWeQKH~GbY)z+0+-IfCGaHLS{9ozGxZh=&4^Z#tUfJitaY-!n{4O~Y=16z_fi=D zuY0-CnP5~^p5^njASQWz`pg_Dih%=4Ft^g8<|z7xdT2J55lus@KjBp06eB(TbmX%n zS|i%Apg#bMiRRI%IxDXY30@g9pI<>a3L9CBPD2Ysy5b_G#8Trd+cj5X&jE zT`u$I9;8t42>f6jhnN}!Z6TM*&|m68CoKT>m7gabYk!-0zvzMfIb-ajaU*UsdEfmI zZHtg-O*R{_VWgk@hAhi=nfc}-;bKJmQp^1Ai0bPkb2lW2cVHU zBIfELp>981YaQQn%s{uN`*XRUX$+ov&n_mC^BH?qp~X03RH)d0DPJRfPYBNume?@0 z9MUt=jTDxo-a`12$$?q2of*oV#nVN6k!~g@D@e9!%o`*6UMjhNa*hK>R*DZ+c=vDtgy(Eq_ZQRf^r>Tl0>5ujdCQpd=`mh&wts#`1oll&2tK@3Kf%T z-YZ53_D1z6y|E|d3{M3wk?uq(D0g?!zom@q6jc2h^P?@;oS}bYh|X=j=*t7_TLPAk zE@QRDbseHO=E#vlEIj-uCD*cXphRCWpfl&luB&(dX$iH9Qryk^yE^1K3fY}ZiQ{mOsI_O*}=}h1WMg}=is&H?q*y+lkTG@ zX3?(esiN;`q-DMqqVoZTVh)YL(UN*slUjF!O?`tPMcewcBT6e!fu-X$md+i5R$}5f+Qa4?OydJuF<@U~WUgKu0%0HiK_` z+yNIe3XSTt)!#Ovm5Dfh@Bo?WA{#e!5jgAWV$akySxcx5jW}khnZ8O{mrUSMb`*^; zW}z9=id&TP0a6I3kW-!L>qFMG~?E*Zr7gXBU{Z7lh5KhihMR;soqQ(_*8;j#AZhX}MkKXwZzxKfgx#cTg=g8qlP{LBk<;VsZ9LGlpncllG?XQ-^*i_Ed z22dvO&b~ep!Z=P7FDdX{2la#{e$Ih4%7g~+{e^?turFyuATZC&9iDk*Qd@MvQ0ocF z=5q)s+dEF86OA8a=-$%L@{fh|h!z_-#Gk4>6d##n*O!|FeT58xBRN@ZptTYCtYdofzE{Wj*|yy_&uIU&i}qH4BZa9oV(WBdaFm0! z7SFl_8w#A5ofK1p@8Yum`?GxM_!j2pPvW^jTO_%zN+Bf@%|hMfO~3mA{`)`NLdSJ~ z%0%@_{_$V#;v4sTovEoKBvB2|amZydHkZwk^%NP;A?rEh0tYF;a}~btuEl6)T6TyN zvj#vR1j2~t7gz#pg;8hczVXOfJrUJIjMi2>OUBF!5V0ibG3XA7=lM^jDzqV+%aOlu zfa1%#U{RwTo7zWfpFvc2nlWBoBe5nROaT_SlA(@(*chg&t#-a{Ddz%mp2N|lI)EtV zTtK}3)}c3aSHL`jQ37k1rw|6LXhc@{Ie#^VV=-y*?WsdNs4rmbZSUr)S6s$*@BJMP z&3FhR#JV;BLrRlO&aLpJ_yXdAE*i-c-NOY&fBG$4{EMID$j1N7rwk0I_dh+G;k#ZjE5(Cr}7Vv$x*80@C{k`97fr&0Y1T+%9D zWU%@)Z}X%&b=v|-NdJ$v7`;ZWrVD0L1;%hkmLp3w<{Kg1+0M=Q)dvdGe-RT_^sF#<#;<+`LeGrtxBLamvsHd$zegfmg9w8^Trie!D^JO$fu zM~?Y=NF$2V^BK!PF+f|(QY+Fu`9K&eUJ1~}mZx=xYx*#0Oc)uok~pqJBCt}j&}fKR zC3xWrUc}Vg6puWC9L>hIMblniabZDM6NxKrw5n?jNj&J ze3z&hqN4;M#Tft<2C^gFH2>^kmVf75CV#rj;emvQADiLGBXcY*w$Pq917OBN;5ax+ zaA<0UgMA5)Kfc7$ffcMPkbyj-OrhId*L{TylPj%Nj|d2ciWzEgBARi6@5oC?r8WBL z65%ql?Lu_hF1?=%lmHpBYyqbUuSfnpHCkD3V(OY$B1>D63If4@jbS0+s12OKgO#s z^w@p*Ha7O=@f>+Zt#-|2OUd#|1J_X$^BJ^-R;xuE#r$OPp|q)W{CUm_Q!|gC*81O* zlkcAxR<+@`r){%}Dwyo8EI*n68j#WW@@@lWH;y1b_+lR43XeQ8&El~p z#!ta0L_6-%hK`JfBLxf15UE5eMpS~qLWWjiK-g_x-!N8c6QJ^$R4R-TcA*|&U6m>t zW|x^iGRtE#kK4H0rQWLY;EAtcV*|0_-S7N8vb`6g!zrY6+wxaSq9pTEA>aO&hk5nI zucut<5wDjhE<{Qyk0IQ89@IBGr>7xz3P#=0`m5OwG_sIrLlUOAb(NdkM!&7|b z&?our+QYo+MO!U;fs6;^fA>%98UF`XYIWi$MhJB}^HmZWF<<-qemG&-ylD&8T9QPw zv3rt95EC zDTlRx=kpxAug?%I6)EN_D{$9`zdHDz?zGMLy=rFZ9ld>>#X_lolW}nzrInDWm`GZI zrd^b>xOIU^G;ymXa$QAS-=jLaNY`Mw-Pya&|F*TRQ-xvJXKgTRAp`n0FseB8z;=N!C+yNBOE(6CG|&GF!| zhu2CY*<*E#t}AI z@Xn7OVb31ez554Xu})u9#Z;(B3-Xnx{_fGwA3JqjU_(u_d~I(PK5 z^*xs{^1)HUH}$iBd4YqEEKpAp@CD^!z;ZKgcLoU%LMWlEFN9T!^0R$TQaQ}8)TvcN zeuhW+AeV6CC71A5w;dvBMQj`z2H=8$A%1+zNqk4M+Rr9{L>oHu9-|kRQ5tUj@|St& zq5b@~-~Jsom39!g8L~kLDqiEFu$KAdDx0E5c-h66zmk-?Y4mQb;apb#Zhackz07Far+0?n6mAKB|)(N|17?YT_Y*Zkyi9sg@Rq*K_-Ad=qKIX1I#^m?`R=%}lm32fth=nhGqop-- zD@`X(-N=FOAtt4A9$jeC+mPs7LowE|+<5?yni}u3+P)K1#(Lm=si@)`SmziE>9L&B&mHc*-s67InRdI@1%6;5XV2e&sP8b$ckN#+!bGE!pO)ZvQf*%UwrAY;9mj0mnk=kUFrM_ z<3$2d5K1Ysg%Vh-F($3$@noyAsyfI94nO;v9UPo#a@UlA*%`KPyOyrP0MpB-$hrM# zoS|cuANm@dOP|LnZf?uL&rbPBEMXLJa(aR3=>X=@kn?NTd`f zCHU%X-=R>*(cM#EadD3Mxp`)07Fb+Zq~5G!mBPygc#gtod&VLfZNP$C42&o%8TE-j zTfSxLb4#9`Y*eHDiQv;-&ZuUzsh6H&hVw@{sh&K6w{3v8|MD1}r7~IXT(;ycM>aziANUgWZ@v#N z(~C|LY^#n??in$~>baY(gz4FNPR%azlYjmQ;}f$~M&W<|(^KDz!@u#7y2#aWh2vNd zH-Wf0{R&jrvuBUmxoh_qANbOLtvJs7`?|Ic2qhF+YazZ1vaC&YTE~vf5cn=b!~Kj5 z_c8v-FY{wB-O21i2bt^;LC}%91{2bleUz@!LC(KmE4@91RMggXJHiUAu~=)h@4C{v zsQbh#rvByqOg#}G-Kn^;6)Q)F{#4}jAyXDKOZv{Lpz@Llx!(E>n} zXfE7X;y2!W2~&jveWrz76l~Nx&?g>d>X9!Ho%kFwzZKIS1fsfnv8_gX6p~m2l@KYn zU#mqZoi5X!G1xu+v>JkcUx!FTB3nskpBPcWl=pu?0L=f?m&YeRxi4NmG%c+(R!aF@ zxm9aZ;eQk*{NpF@WMQF>=Ox_#V1asg1uwt+9lZM0Z{}66x`wNEy@o4_8`*is3Xi>c z5AXl=KjWLP&+z~W-|9*vS+cux^9<6WOP5sTkLjG6Z!s|c(5kC5fPx7+Me~VkcRN;!tcdl>NIlX|X zoL`KyF?THo(~{P+HyV8>xRHp$Fl&CwPyP%hzlE=oz}SC*NZ3@L7Xs$xZIal%9+ zEXYKIohOzdBD)zWJ*=`?Iu>L&* zD;=2)P%#3Mrw8Dub7fnf_5F?xY7>n@C}(G`n4#mAx<2&Sy(;&i61l!2COKPXm+3^fc0Gv9@6I0IIK2D z{)I22c;0!;ef7%-DOtYnUToMzWbK z&1rG^={7KXfZdgGDizpOx!(fzZ{E9=+4(Awjo5O}mAG++rI{1-loOG#uT83JC zDFsqtjizz@I5Lx^ux%^h%nU-DIFk%**9TV`Euwll{9|_CGg~v~>8(`72r&2Tctf{t znk(+oW|xG#U}7CTFk=u=D&Etugg- zU4W`5r%{(&gf}#_*5*`QT4Hg&#n#QkeE#Ei@XmK$#mI1(C`vF^$RtTH#!f%Y^AoU> z-RqK*k9J&5hwqR@;5jPQj~h+X80yIiyBEgS05(<`XJ5Op`>qchT08F-H+yW_xWdV3 zg+}Pmk?~SJ`_ri@g#cranLPDJ9>6r0h1)e?r*Hi-$zo5ccyEM$;Po6Y{up#%dPOO826iZ zj$Hd08JLg1?7;X*n~nnF*?_Apn6t(DQxx;&Gqu-brB$kmZQz}@%U!|`LsQ{9vh%uX$_X=87j zcCfNpZ((D5uw7YrVpb?7m=L=dH!#j0cDz=c=R0(Jl5#Gvfs#0G%C8A2NHl0|S!w0D z&AXmitJyt0&K_Xrc!is&Fg^zL*-?&;PGCQ-=^Z-Bv^z_zJHbB7NW)sBa*)MdYr-bU zi8*ADUyH9!&tedSVN4Py>EF{)JKsC7RzY=F->ZA2=lwSoi=WDQZg;MrC}fq+c#id? zOiOZBuG=QYYOqm~h*HauD@}9RLL<6NH}xyOF>>Ai6vsYuYdVjr@{GYX$zBcEIF@hj z@?APIp2k?mb0wQMc5&d3_fptWqIiBEaXnmP+0!wS8YNe?+u5`?Q=E1hYhBa5CG6fu znR{?QnG4S2(T5)7=9_QkAO7JV_|8KQ@b~}oe-Jg3w9`mnFh_-?C!vjTC%DAQ{7uc?hWAmN^u1L3-HfauQG@#H4Oyw0lb$v9FXRvJv zQf0itZKLqc3f#3d$6*tabav2@4b}vS_89_9tjZd!5kfiEDRg6>FuJonYJhq(#I|)` z6Z@YzcAcjJ)g43EY?n%XAi%vUpLgl)aFV?12`Pm-T`PH_mP(?8CF6Qz985>f=wefe z`Q`Xk^)T6T_omnWwm4Gxhi5v#Z1q~ceeSh`D>Yu1%PL&yNP|U0mU2GJ%8?d_-v4#B z|K^osH+7LTqSZnn!lrsD8z;E(DIPH3ZtSD`rXddA^I<;qwXHmG_nlmS{q=0#v>pShidD7T8lsbyOb-`7?KV$g=A;!neX;5MBW zRsyL60=YIgcx~+C8PVS9?~SpT)p}SGpZUAiBBVf@gylvPqn&3JUp)y}YYVyghK)^~ z{C!^fmv(fjc(9leN=RpQmp_%f*kaf8p%N<{DP$?@o2=)=Q;V%Fi#7Wv-`IFNjbT9!B zK4mRY^$Z|hdujfzy^iK$~Iez+_eu@Pj1lAav<96GfV8`yBh9VMcfcuqssK7!~t5F3GlZ z{NWB6Tw3Z<;Xpp?B89Z(^dLrYMjeUM+KttU?^>Xk(occw$f2Gf5rXo}O894YZMy#O z%a4rT|J}fqTD1vnFS*gZV`}nkzKhNK?)v#1>5z&Tw(aQV;1}n3On;4Ye&Y%(+zp|3EsFqnOF!dOp7E;${@#VM(-K z(KoC}JWbPynD+$5VhLl@j^_Go71fiFEju`*AL8UX^2uePbymw-Ly{y+9(Wjln<_lx zk7*K5EJNHqa_t{vh4-7KE;k%11|CX@C{B=oBjxE?s%zCH-pN8YN^OesY z;e%hfpQB-(U%1rc>fP6ndC4U>LRc&;&Md^W`Gx&aGy1Hs;(a@JRch8+A;gm#bHCdA zItsaf;ZC1YcMi9h0au+C-b;yf6lAmMc*e(%r?FRO0nyz7vCFrn?&Hw*Z_}6Urrg~@ zkjdaEl@37h1mUD*@lPe^_hiUqC9%<*Y$doa7@?=Hgj9l)_nl%!9H9SAnKOng+Oq^^ z)><5?s5cwzd-N!8{L_6;4Z!bavD#$_y?66k6l@%a3cJe&t<{iMLkZW4E=( zEG&Q ze1H3v-i($~suPP18gW8TE`z(8qDw(NjF?<$5ot?D;Lwu`C}li~fk(l2DFz;;Z2G+v zu+WHDY(@l1ifqP3f}E{4H~-D{(GPE${3k6yu2(edWK8`$`_0!kT)WLx{IPPRTh3(& z6C*6CMAjHfGu9{}Qj2BMV7#L@%gN83Ao%eCG6Mxj(&3y!xEMW)5E-QE=8WNntJ8v= z0NJ|}QP@tg>pXh4U5Pk%m^kkvOq?$C-i-=MY(U}*bm`$e}Yn@up9h;ElZfatd zua)k=>2?_DAHa9rR5ylQ*Nz23fy`SL?zWT)4vuF*2}~IB*rSuw7HbIQ;AVXmCaSpS zS=<5`{nUa{DJ8X9gSq7@pZw-L?=8dlv&jl47*)HNNbcTx!!8->SM_yyT1ll2&Q^)E z;hf%L3aa);xXrAzSP5f#^F9SXz0pRbS=O3Fr*W7o!FL?8uA--qp(pDz+YC9f*kB;h zvODY9Qs78xMZRv4huOIBnWeYi}m%>Q(*Ra~B~x+U(WN>$ zFC_`x1_XJB4g|BeKTgN_ed%oUws8`|C2HM^#o&6|&#b|>$yJ#tBDP+MNm_(vKiWKw zNDNx1gJwxZfmSC8vC%e;lfPZb?_IH#il9=lV{M$?mGi`TojI$Bv5p7*-H46?!uP;+ z+YI<=i-|FywXjiSWiAIw@IZbAopssLJA~t;!#UDHe5W%$A=1(7nLcQ|+H&eEFG3P3DPeOUSt_M2hMcHKiLYA_Mj*cvWjHaiUrMG{60`&yFf{Mw!qRkZ~*i zxs4q;(UtY>;f1u|Xl{qO@gEH0a8EPf!(EKp{jz9PY*HIh4BvDNAX_)V_AB z8yGW>){mq0BqEjI(^y&|-`#=0np`m#yAuELeTTktbn@8my=M1>wv|zFGozxyg#BXw z^`fiCP=~5ZW71)03>hSf1no z5<4b13{pA_PJjl2UMJ~P0-bK$Bos7Bnx?x`mFKPyGE`D@6O7G+MZktY zBQeAQ2LmR^qb$pMdh>MO9nQJuoW1wzALrbsH%oGC=pTKmZe2-N_ug~QS$pj@eCzv+ z2IX=jIqhCgVMg1MS#4BGm7+Sei{S`?$c~YaK{pj1Idv#|EVz zv4HHrizGP7jZyB-W-HPA}iIIwrz)_IvGDB-EGZXi;wyoHR>D8D5FSC0q9&Q*a zi}TGcLP02%)hkZD`Tn3&#j}&oElkb*+#AOJxOwW-xTNFb z<`j+*0F(vO!9#A|sV05p8;f6x{qJ!2G8bil(r3qLDTiVfEktk&Uj44VrSAQq~ zc-`E0qOTn|^pVMS^e&y+L)Y#JxKfbP3J|7RF_a*THbQjc6m#t!hD#nQzJo19%*-sL zv@npqa0K}Ro*-@~MxI}YF;wyFfm(^CqXb6sOZNPcSEY;N%K+@Xd9kKneu%!j|Bb3I z@zn@j%(P+*1Qz=$KBiXlb1Hcb0wr+s!8)FuZG(-$;2j5{N-lIa%`?(r^D#tcPhh)6el+nVnZLM}6o_+ely)S?3N4|6F)VMl+ zd|ZzMbR4JoT>!#*NZ!qd7?o1)8o)pl1G9@cv41biZC!xaDsH8gnrX(VHBef?88TS% zdl)L$A*9$q3%Q$d84b8KLhVh!;(-{^qXr|>4n}~P(qSw%yoL$R}0`fIo`Zq zyk!7_nZbga-BiwXd$TK1@?FC?>r0tBO77Ffyu6q4fuSK6!=%uR(0KA_d*5e2{IlMG ztPSYEErCd})h&^vo#dA8U1egQ~Ap}7HBD2IXV`}>8 znTf^o&wcpS|LRW{`bGr+M+@-FJ+&jkA1ndofMJWF($yAlZW3rmfRZ3b01&j?)%;wm zOWg##Vl;Q03}st}+P4h$870rVI*?#tTuuq7zXFJ_OYq#YDaz9he2=jBDFNvi1lRA1 zj?CjolMlPXeSXB+>NN!epMRkA<1WOjhN=z|NPvKDl3_K@aNS@TV8(1K#z@(R@2E8j z$h8t=UJtPsS7Z6?Qv1`9wZH$h+4Fxljx%Zh%f7PzjW0D-d~j*TzQyiyyznQ7#0~en z^uv|?wK`cGh7_T-ESYUAgjiVkdF?HKVhMW&T|pTz7~h7XiI z1*rs%>>0vSfA}n(i835{&nxnJR;ocVACySr9@;Cds9Gzv9Y@q4l&_@7#g7W1NNX8Z z8|Wq(E&*<}fhV2? zG7Wex2)P*Q#b(0KEyeUqykg(k+!(xk@@J2rY$|Z1xN0C<-?)STN}~ij0;Ew2?f|t_ z0Zs@uVTfG<_qB3^Wmxi7oqzhm>~j}>rBtfkB9uBPh=xguDg-19 zTWf6xhUbzrnM~T9@6J8`^f%w|{=b@8Ykf_ekn4?V!v&Qk5`cveK->e)T>#Py>^TsH zF3Hr2#<}Gf$7k;6HHZv=2k-e7?s@PmJ{6S#kFJX5a^vtwKH&^YIW9gVpbYRR1BHMW z?4^(20>Gsre76iGbb*PxO2Z<6|L!G~ACQ@NRV9=RSOpST>h|C$flA;)X9iJfu)i8? z3(*iv*02@NHM^0{=mTT;`}hIe<8|<$eylj}UmqVAA0Pi4dgViJs<`&ehhy@6PH;y>dch|A-%?PC)IC&; zLSP*nJvxdxe&t+zrO3u_HYDdCrbk=cj8`Opu%|F0id_cPpk0J;G186e&E zrcF%9`yLzPv9X!+0|35(J8);wfSV}i z*Wr`O!m$K%l~O&-j3`bJ2HqMx*>WDWk}eEJ5J>QrNu2&{W#6u>1*|a;#jNFPuF|js z0GQN{HGI#h2Ce}S8Edf`r`S{W0Wexg3SS9GA-0gzaEWS9Iz*kp5c4(NQRXE^Wez9vC80pQPL4w8)=P^MjOeN1zQ%@TB&=P6lIqO-+BbI zaT}@46A5d9q0mEWELM7XV_6EqaLGsDNUZiWmfAg7!#FZBgp~p292w&eJ&Nvy6-Y;d zErhYmLFhMzZoBoBxv{LV9H$Qg$$F!4kuE&|0351GL_t(yW}29okUVihGC(voX2!?2 zzuQNPlF6K&w7p&i#0h9=6;N_*Qo9o~&Mrpqgk0loxD$_T`7Fm060MP?7VAbxchg#g z5II*>6enwJJpFPP5x`SyY zf)sgoVWpSAcNIJ(0mFzAgTa!!%TmdkXqI^Jk;YdmcdVe5Q}`71C}u%K<{MxBPoqTY zoldy~{S8PaIg$8=FwYXmMpgo@`PbaGnl z#pNFSK?ly`2^PM39*2MW2l_^6JkM1O90EXRXFH0SE$+K-<5`T4Gl+1dIyonBG7tYd zv;1%?VV++Gr5UWq2_21LOfDx#K{$T#BqneRj&CXqohZ-);U0z7Ob=<20H|EPKgSG$ zK)V~|Kt>|yO~h&2O7|5E$zY3>)eeRRs+ZowIq9uaXl)<8N;V3$qP?3PGB<>t0GI@W z(duQ`Td)Hs*1|BuQwrE=oSj%GDQw+$N0&0Zg@FGtvF_zZK7OwRU_C>xt`3(P!u8l# zmbr|QzvpE*|L#+$g+7Lq3#%=pAdHp+%(i1#1_lEcpqw165qL-)izKtC zssOF8&q2Q>137sdCmjV4?FGOWZ+p49K5riXlLkI0_do=k=BSnM>iK!p{l0UvXm%O1 zQHmd(zJEu7?)!?K+-pDh2>$Bd-G(GhkZKJj1ljdUC7TvtUpi)GwSzr_^=-FEV=a^r z*f4rQ`JAMb0-dObAn;HvhedPWg4trF>t8iw1^|S%_O6QODNhOuK@?><+$2;vq9(~S zl*lKEx6_#DE6FQKJXCh!Nc`G2Uh-oHw0!hlauoCBSR-QrbSn*yPtsw zBXreT@2sconmgRx9YYR;o*gL%N1`r$clC@@+HpafyI-9s}<)^&06A|QpbuceGNiZ^~CMJ)4U z3@4c}j@K{$Emp1O)z|{oq8S0JiN^8Szs3YkV0;Tk9=LBjzj-I$cN^}1?`^QwqScPk z?ewrt>uw7#wjhFG#?1T@%3%P{Rp52oAR{+Ctt}Q;+M7RQ%>oG7+-7J`kvUMk94GR){{gOV%OzB4skC}8cr4OjqooX4*YO zX$FJ}?JR+~t^y};V2crPlW7371OS!F^b4-@%os=1RCso!i>MkJT5~MTFmIN zAy)|1aD5^+H{}y73v_z;mZF1!?v>YO3f{|J0;4r-q7fXZm-`p z2p5)mNVLJ*=C+Tm#*gKMun+#~4?;?dp@9Z!^*V;?RUAGric;toT8!&JnT6L?Qlit1 zFgZPsM!kwkIoQH>+y_JYt_x!fk|ZtgX&YlOX2vyp2ca3bI5USd%Y_I4;7iZLV<}?n zH+i*8W`#EOk>zFcT!Tdl_|7eZS%CFM)g#`jMw@PynEfna`Wr zOjmM?KtR&%!3%u|Az*qM&Tt9WyzO?>ZyCkn!xymn`6(gp1jzI0Dqo^DiLhp4qAewF=Ug#ig^`K*eND(|w;kpBL)NUSuQww0Ufl^XuQR<{| zdirI}C(jjdV)J5nuJNLx{u47h-<6|h@|$-5`&Up6T{H&ja2*L<4BuL|xl~@Cz`O|5 zi3rVB7n3s!=teQhFgh1z z@K?Y5(wqu%Vk;HoWetk~W0)1N&Y1eXs@UQ*^NwCi3c|GmWh*$6lg$oZH}~03Ay2&( z6=U^5V;?aUAUxDSc(4K1 z7Hk-7EJz7N?GBXh!mE^!MG1tXjLEcGoLK}6{T_{-G(0gT@dD{N?-0y`i{|v^AKLc> z5B&RE(Mv7rwE>-`_W?G&7iAYGQGD6|SqWe`FA?PK2}Pr_iWYP$>rp zeHX6d%xCS!$HgsU<0%3B={J4k+gX-A zp_BjwS?pApDPHKVbf8=XsnnW6XkOD3u*M*6cA$G2Ix+d?sszZB5U$GQ*ru1D;}lW} z3u`HBwW-zYeDvs7aQf7#V+vy@Eneh7%iIW#_QCniqF?|k8dFS+Zt-?lG};z<|_A+{e+WH5vz zWW5yKl~n}Q(zX{`NQq9f4V`9rRXH=T+Q4Q8I?3RA9JyV4zxtqZD+Oq1EnSZgClt)AN{HY(i^;IPUE@iJsFFFv7sY$lw4# z5}*6k*8yW!SIZJYh_faG;#9LEB}~yH>a&!Du0+yTE1;dr4Gb0)-_1sAfs-cqRR)Oe z{do43Pk*p+`@Y-$JgC&Zc=VoEeo08@M^>9{fJtq!EWY&Pn)6ElfS^*!c}B5O*F`B= zC{=VJ3djo)tx3;0o`cFzjaO%vXztu}H22)>fBlC?p7^EXW89E;Ah|a ziPou8bWKhAwKQ5K$B(%M6Q6Y=9fQmbLIa2LtsQ0K&xkufehLEB9Ig z(tJ5#&CMuNu$BX*5M{bQjRFv%9=KSF(kqa4W)V0JH>yFH%&p$|#G}9c=5i%`r>a$r z^t>$9MmxT1gG!j=g=hn45mHGc-53kc&A{LJ9~eA!W`{;Fm&x89GTf z2scro%q681rJ)A<K5BzRRT`-1)K=rG+fh=tdDj--VK5 z8(#Z-QMrynrcK^}F5+JX!`S?xwT0(8u+|_>(rqQ;To0t$4DYpj-_E`4!r=d+c$CA&Jmg7(rXI?F9|Ry$~~ ztRil8@{&Y1-j<%)7(;I8+r5WJ%Oy{J^joLK>vViv_c=qqA4ea4!q!l&62cF?H6pm3 zVjit6bY|dr?oN>i7&#K5ub;F2^VXm<3@9n!Iu1JB-eucq#xPt*VW3_GGZ#c~R~DFx z<2bE}@d*imi>opFN`hh0ErMcGbiaqo9;TYPHnQ9;>Xm|wF>vo{{7k7|(zd)@XVEi=jjgQ>{u!QdiYfa(Z zghmYKLJ98nJ=?X|fQlN|X7#SEW(Y)aFZb}5?Sv3YB_F=);P%e#c}9EUN?JMqMWp{{ zOxbj&Yt(AoGb7~?3!PpOI1<<}_LKuCDe~DuqAkLbc~uO+yoUOr5W(%kUbRtYA*IM; zB--e?3pd|swy-=ohqTj0rBOzGunMIlT+b!HfRmTG0MI#fkRsD#&`t+T0y)GTNfpDxF$|tM&4~{>N9FpQ7WZH6|v$=U%ISLuMb(7pw2PTNw0q z>znR2iq%)s$p63H>d^`t%Ctd}X2`V83$eR(>nNvz@*D?4jS8})C_7z=VV%SYas2!P zv#|ILPe`0!inT++mOKZuo!%uT8D<=Al+aBy=2~$P7!vyJYKvTu5{f`SF@o~`277@| z*4k~F@(iH_qIMVE#U{#CAGLuh{Loty{LZVj%#KoZ&sQGXOHhwKu^KZ&ISMF-B!m=O zE)#)ZjUm@_ZFOV-p6`9=n_vFTVHz7V6B8%CrveJYx8xThwi&{}$wkG9ckwIz_K3Lb z_}AubY^Q(EGJ{MTWIDT)FziCu#zl*-TnZovI5mFkimLG91Wwv1%`L+ZT)4iMlUx*Rz5UB7M9vwwfm?LLgF%vtpue{R2(d7HYo%8yWkVwahn4RA z`u8KgS~%0+wk%44$F8e#hjkgnEhQy{l(`@%ZSP}pG8S7DQ{}dXy5_pTxmGqahNfRI!)ntPCn_oWuf-BPeIIEm-2df zBFA%(M7?}^h_(iR{iziaB;9IggHrI0GY|ilTgJvtnp3C7zh~+kYh6RKpBbMro*F(x0AAGiI(GaboOR!ESFoz`nB20Gp|9 zq@S5;;kg@`vcn;l%Vh|qc9baV2kb-yxdzdpt#O5*4FZ?j)Xnl0trSd}vetSR=3Ig` zR;VzrLwg$~?&$Xcz_EohFLw2v`ZcM(UNRVv1wwb1ZHW7ILn#Exp^t8-i)N<_lOtsd z=T%r30lhSXQYz;$v%Gbs7JrR;2AXx=q$a!8sK(|;Kh83FDX8RoYu@#8^{lmM@HkFu z#<+O-)TbYfIs5rkn!i|Xr|H~ErpS=&^emrS?3lSuY{ELmxX1mg-$b=G~0EnDC&qpl|rb%d)s4Q{?I6moiq~@ z6Y|9}sJ?HxR9vaT*c|G8nYfA8!(=L901LwGVjFYItI%1>ebI0w2s$(9L@}zNpF^4H z5&~uY6_i3iIjV?@8B!?70(wpY;KGA&`^jNhzR&gdzb&IYL4pFTe(# z!a$g>!{uGX<2J_^Jcg5oaY7PK_V673N@j{>LzXlq~vKn5@iL11h0 z#8&`vjevKHZ(chmM>!}5E-EDlzxW4F<2^sR7uO7WsFyrA4#AZIwa~?U0jKdCmBVI; zF7db9eDcOJu-r}|r|03hE*StA!)hIcV!6bIwzH$j= zPI@UtomhB*XOtraTc)+3lLUHE0$F5zmhINyKA*#+EaOGC_ySvdeX)h^8WS@>Ti3J7LMf)|YeNTM6X$n+w7S3)@oQb>>> z2nZBhaRh*kwXoK5l4PKKFoF(O6@T=L8@23Se_I_d+aDnC1qQ1gLeD|yD!5AI1iH*Q zn7~*(yV%9Aoji|UIzEiD!w3Qg)xd!&W=VY|A(Y4kumB{PL1r{GTdZ~r{^ax1Xh>i- z!qpj8KcEM4v8Dc$?-)+Tm_mFB{&7N|r zm&>K0q_uP_fG-XY-$GY4IJdh|0r^CAlzS3BUz_a=t2%XmsQJ1ZGwY(kloUo^Nr`uLJ(e zUVfx}`s-)$iBEm@=nvj@XvF4hWyFO5$d1FimZi1~&v#z>hrjbPzi{FgK7RVO$8Y%4 zm)&x>;(+ABN-OSJ);AyCv-j}+!E5)94(@N%g9D!D?ROke7lf)%(w9mW1De=BGus@l z4b@m!BMb>5L0rJP3p^|_gQ?$lB_WM5R!Jca0KoAbXo+3`zOZN#vrU_JE!zgL810y)ZhIsqf3$&Z1w5Y5 zp{~-sA1s2>unBnGIPw8>7~+*d;QAnf5X2y|MLNxvnJ&fJ#nl!B<+|4OU0JP`_uPE_ zp2qybs`%ZH{_Rq~Jym?)Gsx%v)QLCT9$b5PxKaw;>fSx|TDcn5OTH6SDnSq>I-Pjn zkuSe{Px+9emK^L&(Rulo0tikr~-9vGG=(&v5s`d2rx z1RyoWur?Ns)@aYI2sdyc9km7-F4DlYUuZ0`PI{7!MXS}BfBflr{mNGyD&KfyPzC_v z!gsi#=aYi%bYgSzv)@UIZDj_Vm7$7fW9%Qj>gCsc<>0=-{q;s^pXYmnQi+PIWW_>A zHmrzPu(j4$CZo-T2Tncu1pr4bUTi*DWN_cNV;abd61njt>nxA{2}bg~7D@L7s<~Y0 z|MdaXibuGo5`^>ZSiSMJH<$k9+kfPafm&(5=c?h*b4Og?8J4c9OQ}kZBbDnZ2th=Y z7u&Sfn3`IA=vVIhi;q0?_4B3@N@_=D%SEVEB-O)Egn@)q64LeHNg%a`4FHoE)<%;~ zAkI%W)BXy-`I^wVcK;ryI#6ay5u%o4xt}{^t)ZzT%c@^!I04 z?IMHwf9ZH3z32D*#Gmi`1OTybADroFh{8>KKYr{Me{|R@SAA9Af9>8zwO(xu)ylPU zpc=00l!Oo!sYIpS>P`RAC%*c%Pd@mq+B!|2xv-ioFL#o{(E88)M~44@yr{?j1=U{>W}1EK_W%F@07*qo IM6N<$f_9}t^#A|> literal 0 HcmV?d00001 diff --git a/spec/test_85.txt b/spec/test_85.txt new file mode 100644 index 0000000..72a1b3e --- /dev/null +++ b/spec/test_85.txt @@ -0,0 +1 @@ +Q03,Q078,Q0DC,Q09C,P019A,P0369,P036C8,P02EC8,K01EI07EC4,K01FC005EC4,K01C700DEC2,K0259C0DFC2,K026E70FF4,K026F18BFC1,K0237CDBEC1,K0237F7BEC,K021BFBDEC,K020DFDEEC08,K020EFEF6C08,K02067F76C08,K02033FBA808,K02019FDD808,K0200EFFD8080FFC,K020073EF8087IF,K020039E7009JFC,K02I0E5F00KFE,K02I07A301LF,K03I01C107LF8,K01J0C08MFC,K01L01MFC,K01L03MFE,K018K03MFE,L08K01NF,L08K011MF,L08K01F7FF7IF,L04L03DFF9IF8,L02M07F4EIF8,L018L01F43BFF8,M06M0740EFF8,M01CL01C03BF8,N03F8N0FF8,Y07F8,Y01F,,U04,U0406,Q08001013,Q0E0010218,Q0AJ021C,I03F8J01AJ021C,001IFJ01FK01C,007IF8I01F8I022C,00JFEI03E8J064,03KFI03F4J0DC,03KF8007FAJ07C,07KFC007FDJ038,0LFC007FE8,0LFE00FFEC,1LFE00IF4,1LFE00IFC,3MF01IF,1MF01IF,1JFE1F01IF8,1JF80600IFC,3JFK0IFA,3JFK0DFFD,3JFK07IF8,7JFK06IF8,7JFK03IF8,7JF8J01FFEC,7JF8K0IFC,7JFCK07BE8,KFCK03FF8,KF8L0FF,JFE,:KF,KF8,7JF8,7JFC,::3JF4,3JFC,1JF8,0IFD,0JF,07IF,01FFE,007F8,,::::::::: diff --git a/src/Zpl/GdDecoder.php b/src/Zpl/GdDecoder.php index 2d974b2..5e893d9 100644 --- a/src/Zpl/GdDecoder.php +++ b/src/Zpl/GdDecoder.php @@ -29,6 +29,19 @@ public function __construct($image) imagepalettetotruecolor($image); } + // Converts transparancy to white. + $width = imagesx($image); + $height = imagesy($image); + $newImage = imagecreatetruecolor($width, $height); + $white = imagecolorallocate($newImage, 255, 255, 255); + imagefill($newImage, 0, 0, $white); + imagecopyresampled( + $newImage, $image, + 0, 0, 0, 0, + $width, $height, + $width, $height); + $image = $newImage; + imagefilter($image, IMG_FILTER_GRAYSCALE); $this->image = $image; @@ -119,3 +132,4 @@ public function getBitAt(int $x, int $y): int return (imagecolorat($this->image, $x, $y) & 0xFF) < 127 ? 1 : 0; } } +