From 6176181cdab2ea804529d13b6a7227fe2c38c214 Mon Sep 17 00:00:00 2001 From: Joey Payne Date: Mon, 8 Feb 2016 11:03:34 -0700 Subject: [PATCH] Fixed icns tools and changed icon. --- files/images/icon.png | Bin 8739 -> 15161 bytes files/images/icon.svg | 161 +++++++++++++------ icns_info.py | 6 +- icon.icns | Bin 62361 -> 15088 bytes icon.ico | Bin 370070 -> 270398 bytes icon.png | Bin 8739 -> 15161 bytes image_utils.py | 4 +- png.py | 362 +++++++++++++++--------------------------- 8 files changed, 249 insertions(+), 284 deletions(-) diff --git a/files/images/icon.png b/files/images/icon.png index 6bfef5fcb445faf19bf7db73bac1fa3d8ea2512d..93f2932570ab6ab060c0a74de25501594dbc34f9 100644 GIT binary patch literal 15161 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 literal 8739 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 diff --git a/files/images/icon.svg b/files/images/icon.svg index 132d1c7..fc091ea 100644 --- a/files/images/icon.svg +++ b/files/images/icon.svg @@ -7,6 +7,7 @@ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.1" @@ -24,7 +25,56 @@ id="metadata47">image/svg+xml + sodipodi:nodetypes="sssssccsscsccccc" /> \ No newline at end of file diff --git a/icns_info.py b/icns_info.py index 88fc0fb..dcc1ba9 100644 --- a/icns_info.py +++ b/icns_info.py @@ -669,12 +669,12 @@ class Structure(Printable): values = [] for field in self._fields: val = getattr(self, field.name) - if not isinstance(val, basestring): + if not isinstance(val, (str, bytes)): values.append(val) s += struct_symbols[field.size] else: s += 'B'*len(val) - values.extend(struct.unpack('>'+'B'*len(val), val)) + values.extend(struct.unpack('>'+'B'*len(val), bytearray(val, encoding='utf-8'))) return struct.pack(s, *values) @@ -984,7 +984,7 @@ class ICNSHeader(Structure): for icon_s in icon_sizes: icns_element = ICNSElement() - im_data = image_utils.resize(image, (icon_s, icon_s)) + im_data = image_utils.resize(image, (int(icon_s), int(icon_s))) png_file = png.Reader(bytes=im_data) diff --git a/icon.icns b/icon.icns index 3fb99bfd792630fa3aa21f0094390f16567f6b3c..78072b4dc017d8f6777b34e16fa8bf9e580c2041 100644 GIT binary patch literal 15088 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

Tjc}Y8J4{kJ z2Br+L`1w_sWFfsdyw{WmBW?tq=2Hx(O=IsV3$hJo=tvqi%%CskfgnQI_6Ef0lU>sK zA%T^Y4+^2Z53rLH1cawRrN;K_Ar0>#gnc?eKRgOZ!|Mp8dod@Ma;GbqpH7991DK6J zyrNmEF$rI=tRRX#Ef$wsy@T(gBH!fwUc(1>J1n~!H&Z-S)?Gk2(9938Igop=R0a=- z;x2S~?SW%^m)u3P|BRbqTFNC9+bfK|Gh1ztP#Q!SWN&DwBHv5m_1B;%N3aWc3A0W( zSbwOYV&KkPm~{0*nyBW3NK7@}{W;eGD4l*;dTa(tOZJNzFN#I?W)4(jyt&rvJH*A+ zJ*edPK|VoWf?buFvxc|k!hX!BMrD1Mz6dHftLR7gYtEVVCArD0jVi5^v%5xO;3w=b z!z{X`D@Vo?mhdOV5*$CQKnFaS{XlKvr&*r)KAnk-*pc<#8K^zA(dGQU6Vn7t5<*S3 zX9MFyE(I=R#^Uvw<~0z6{*WybnK@OycO+`$CDa?xHe}B<{(VLlZqYJtph%mR8ic|^ zjEoBB%rjtY{?7Re`}IGI`FweBII0gH&9V-?6h|fTNy7aQ*sQ5Www9>7Lras;JE!3)y)8crn z9H(^dr&T=xDH+TwtE)mOV~bfQ=tpg#i0FAxfvTT|L!j}mW>MBz6yc$gT#B&fGuiU6 zYJ4PGSMRJ(7x2JUJ*blng#G$L>MoMn*$fi8;Tefn8;2}CX?)5%x6zf>yckhdR&`_u z0eeLFQ-%~Hz}5JEP!nn1jtE$!0Rc|q1N$AXY*adebK=N^PuDL`wrfUq+0Do?%lP|C zR*Wk-{*TuVKlL8?AIiBg2kPq$;=XoSyI4f^4){I-*MEr2cSFNnNFvM0d;4F zUL#((R4;cJMKlm}`mX8B_{aGR<=l9$<*X>SOIz+D48QV=VhexM{*0ms zG#MoN!(bZIf0H(lVnAcZc5i{kI`g(-k3 z9_0X)`>yWpkDM5s*bAAdLN!OwD~Er)TdI;wBJGJz*zfnZTDf2D2n#(|WMI;Tf%aNq zP8`wb^e1obQou!ic@1rH1KHpVX*i$D!r(IB|KQ+oqstylG0;o*v0qk>IF`I-S8E&K z+#J!|)@w*+dG^4ymSgGqP>-+Qr>%?WC56O>wD)rKqw2c)E?{^;Syf*|nZY7zTPeLi z;25ADbZKx)_G-FHs0=UEMWUHdvzhBn6pNXf9)kV#An1K$qEddJc`!A2AakJy4v_JV zMN|BZ!b~q1(tX#^2lADGSp{zk`-UsD>&Ez4#l8Dh|Ks zGQkOuH9cOq9k(xJo5@ce*AYF1kYRhZDc+QkwuMlC+vE+UA!A|mg{2pgmTTbwLOI$T2Uo)Rz&So&P|nz;yd!%v)~_L44OQ`Mc5-SSu8xjkk~k+oI257=tgh&U0) zoJyRswjKXs=P|Du+SN#LU)4~bx+ItOSmuN;t(@+>EL8Efx^u~QHdu){RoMEeW7`YU z4tXP9veGR-^~097uK5FAh6~3;AEl0%9@Cu+`!}%bI=uUUJyhd740v7qoaA0;yGibe zg%xN|w7Xz|y14;out8>If)*x;m;>7zV0c~=N*93;Y|qXuN&T^d$sV!~s0>X#7F5HX z|H|$rWFaqIMqBDl0;Y|R$I56CzYH)Iz21WgA# z-svdW!%HH~A+F}Tc`Uz1mN^u^MQg_nf(KZR6X3^XMTNI#4%g*kIeZRUZ?GIe>

Y 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 NlAOA1t+ZwM{{wGye<=U} literal 62361 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ςWPCD*RcgM6*|L|Q2u9?hyUC?Llm{QNgRTbgS{<9yN_B(&!EP2BL|}y8 zE3Mn(9arhW$^w-T4MZk5-8DLJy*^0llsRdbodrKW5!^PelqHapSCKMmlZV#5x>xzEXoI78V}r6D4A>UPWR&M@S%MqmsiqM7N}cb3OXS%w(1toycIK zlu{Ay=kduG7p#k)zx=QV>r4S%Q4qukLgm7(M%2KMeOE)Sn#=LB=wLn#FG8XzyPG2z zd(pNGaIwJ)<@nsIG{*X}b}Qo8^r`enGYtA!k3pUsy(Z$pM`Z(5fWvk<&w`$tA5&pO z)y>bb$V!)?id&Ha4Psn~Dt^npE-<CrIxR2`!vFv?3_MWP&zWjnQO4p>#V!fKR+Z3y(e9s0sg5 z{m_h?WKB9T@g>Jf3aLl?Zx(oFex}<_`4g$9_b}=}WXoQ0bF&;y{NIbx6TA_UfyHX} z;;}nEE^A|{pn^{&VeW(_Tss@|$_s(u=POCI8v>!ZOyPapaaN z!3*y`Ik4%b9EHGqpbu_%cyyW}kv|*&PSh=pp-V>iRW-4VF0RXjY5uWvLYrGI|5^*Z zaN!+78>ksNg*@J}IR!s>*feDmDI`mTaKxccNHa)`TRbeF|442d6;VWp0m=ZF=xO9c zk4+0&Zn*|~%duRT1V6G^yAYNzs0boMH1 z2SLRQ|JMVEbQcSPIBkgZ-k-mk>Ia4j>Ms?`pEUiM0r4ctINa@SOh|%kd2kBEE&E{> zm+{42>{Gc7cEo8v#9caP?CYeSY~NaU=O?#o!eojs4{u*Nwz}43K-mYo^?#Po3JUx; z(mnq1_27K#qbCWce|?`ZVnr-io@e&F3hqC`F=;nTX}np#myR=^Wfu33eL^#m6n)5%SQoz1!l(Jc}L zwbVQzcuj+ozv{dbW6LLnf*w|Z3}GbleNqfQjis35*KGX3dl58t(Uyu@QKab05nCu> zQEPeREAOW}tOV&Hnj9qkd2kKd*aa6}ffKO2*QxjfWsn}O3aQra9YA*5Zgohlyu8tK(QllE64hz@`3;rp4ECwG8^bDZY8b9`t@ts>&Bi+i z1FXV0DaUPP;R9w_7H@NoJ-ci%pr?igR>MnWLtTWxTa#%~m+H{v8xIIL6~YbxxmXt5 z@VMLWXk+(D8bPX8#`IN39Dc%VP56y1F!!g;>(zaXFhT?9cp4Ourn}t*=a)DZae`$p z%C3)=F2GwRJ-0b(UY|P^o`CYZ3&w5})zWJogwie?W{Vi< z7d872@gUw8E*1|`gd_Vw_HxDqSIUMy)V`>hDmL<2f+dVPe&8*7rVm95FivhQ z7ziKT_0csm1%(u2^`H2}ps!vX!$Nm_kZ3v&ABtj53TZWcH0O!reTJk?YbCqRZJ?|O@V_XXsh?T1i zCU4|8F$yx{<_PS|^-*Fb%%O)E?#HBxsj{BVv-qirjvHv}Rs0q4ujh2}U~K3oeOh}g zaGf&3FGRWC-Ux@ByTG$?z6j6^xo)JV?oqTw=xzv@+n`ZwaSQ@~5ulw~?Q)_T@ffS$ zy-j|o$83jXD)}N3e1;Us5KR2iB$G~mE#!|7ntf;Bhzn}sV%57}N68a9+e=W}<@Ft> zCC7Q}%2!n_BAGua9}z00;g(;E7~zZHfW!n%7R{Z}aNoT2%YCsq#shO3Xk;!^i~BD8 zuL@Z>NRXT8t1i7wFo{>B%JA(Tu#2IOE<_6>9aHZ8eQey@FPg|@1eO;K2d4e8d!I0l zxPFWKrV%o|f03pImc#*@3sTfN5JlE#2!2a6TsbU{xqS6lxL=Qm(xKrrxPoH%ehK2k zx~0xrIrUt=t->m6#cDp{d_32bRc1T+*YP`4k4e@)AGk?ONPlkLk!A!O7E6UeT{c^K z&NE&w16kG`13wgca6zd+6NN~Xk%MTlThHUC1ZY<5O0eI%pjMrlm3KOV>pKARbS|V+z|6pGG0H{|Kbht zQH8o2$d%CKNP>$TS&NGH-92`LIQHULvEWs{_RR^!lzGSbQ^9jw)w%|l+8MOb-`~U6 zW%#MszBW-8kqqu?U#DLhQBjH`RHx|*vi@B)Bz{=R@Pc^+Qw?P8XYhygfoW%sC^KI% zDyC8XS8M<-{M*uZb-!}ZmOi1zgS+z!5D_KJ2jvY!uaG0Y%+#vBD&x3{+f`(AMX=92 zO%5@gL$=Wc{4_1mh!zEuz(d0o*HzqqfN9FR?>^Wadoz4hf1yitD4dQTALu-ehmquA z&D+qb~w?MX(%(Cxq(8@GMams{xE&M z+aC4+uKDBd>(>$B7U8|7mo~-MIy$iC?Z#TsZXY((dg|(R0B3i@YC_?5ntxgbwi2Mk ztMTR$kr?}Wg?u3b$tWNxMiCx8Xk1397M*4hMSkM^ufJuNvgE@8CRtc%iGm z|Gjw`=ismA(!YH+Ouxl0p>h;xs6<2Z*T57Uih51~lcvb9JcKAfM#Mm(z%7kN*N#6< z;$vIFv5_%vwNxv3=0KtJbf$dd-^{d>QOU77JsLP^udWLS>9x-w=D&imzLKQj4o(bV z6q%)<xNksj0d$3`Vm>R~BD-jErg7@5(H%O*@o&w|x=yM<=B+7t~@z3aDy7UkB-&(%#0l36qHxL_cU>DJ(B%yGB^oVx#= zmx7K%x<>zd90*B4!z(A11FGetby`9TH7WW?A`_F5e{J4dflH?X2(`txY~os){IfqF z@w{?hXUhFO!pfPCrNe43DBf318nqRirD?`JkiLAhWCD+b(WO7~|HTS~)TL1{qv}QK zc0h4^0MwNT(%)uIz}$u^%~)}WPaE*`kuJp!BB)UmNUAhIhMY>dpgd#9W@Bi_xlpmP z^AvjW(7NUD`1In>er$B~XC?Vxq12rbMGa4FvCNV53kjc0cwwc!Rk~#5J;HFAFbmI+ zT&$>BI#VI4FAEZ8nf&R8H=SPu7Dqw*T7$Rax$@2TSp_U`A|UTk5m&~d)In=9uFmut z{uyjxOC#iLc$IcIQzH=E-;T-r(GR*bT}19Dw=nI-klRo`2??2w(T%;*UG6z|M0weUXlrVB-9 zAQV0Ya0XHD}&4`qaFNQ)N6Of>!VLEvP@a4Pkbz4cohCk7G1ALCq z6nTS$S?!{U^8f}>%79FDp{q+CqG63eP(I_9(P|NFT5L#6hlQn zmiUebn4@Lo(>6$KR~<1K({E^NoP45MrNobOrXl*Y&pCl~H?Dmxn-o_@KqMk`I~REI z`T@zUMaaT(x=DDFMJ zZq1iU9QLfXyUigUO>(#PByjjTnWx^X=Q{^8B0CpDf^U{=HEIm+)z_Nm>prT=ZvHQPt6NfA0DzaNEzr`MJIOJpZ6x{>L8V(kW_j1e{bFZ zjx&HES8pSBHVA0HmN3k2ZRWvukN;-qkZisJA_zit&@(Prz02iQhh83sXfmyBB;l_$ zVq0c;Xr6|^G-Pv>8Z~c`F6NK1saOdlnm*>Q^7oJ8lj1QeJxtk!h)I2w`;63{GA-C& z)~fJSOFSI*%@H7iOHbZf-m_$0|Bva!F)I-m%rxZo5k>o&pkV`1{#cqxcATAdhJA;= za-z>^bwWV_F(sxM>o!ECBa0UKjzuN{0SyVi$VxdUMox6sl?bveONZJ%o_2EUo%(7L zfh}Q43DYFMK=FHWQk4~SOCe*s;>`0ir4Y!W|Cl7C)xgLxq=9`SC{w>1;)Ot&pfhLw z--i!@J-jG1J18N*#q{C;MtfiH)tU`c9#cG`7?CY1!iy64f45HV&8UAz8Nd(?|u2go@$8%}^>`AmRh8#26EyN^A2<@h|7jzI1_ zKfG@Y!hcK*Wo})Y1R7&x$Fd+zK%GPV(@=sCE5W*KF)+MZT-f`EIxtAGuTT0i&4w~SZ>?EFS2{&Eqy!>p+ zBaXMvG)MO9$1;q+XnkH1u?WG+`i~`nC6HmNCGXUN1({1)szc0U!3v(|6i&go$NW7o zFN@Af&z(p=(=rDA*~T@=xIX};wFJ}N6#I3 zrvXe7mtr2nZ-`BrPbLjeCdg>GL1P39fwk8{%?-ig>55#1xseYJa656)rJk#od~9oL z)4%O+qqA?Lp{VC)VsD%ny01c&1!%CN(SN@wHL@lI31uc zT&ELfmpPhTlmgS`o_J78kyV}(22R-O0Q+-sFGF2TXmf*v-A+roEZ)D)?ycgjKs1P( zJi+jCC#6kH+v`NHr|>aJjib-_Dq%= z_wd7D*$ykk<>y1TRV(6M?i9*E*CA~lX&lfn-%c)YzebUPpQhiwj|n5N9xC-Zof2Ip z%kPffPWFtu?aNHieNJa(>}8cjuUo0s7c#Sfi|2Ud?1Lc3O7cf0r9X_}=i zpH|nJB)3P?(w$*bNm$OT?NLXunc`%p=4Ww9d_AQfazE`l8QWo#sh~>fGa(dpu1}0= zXdKKM>rPvLMu-&3MyhgjAZ2Yah18pU=_d5$z`NQ=&@EhHG zbtTea~Xo7I(<~PK7 zn;B)rZUF@4E=6ZLU5(T9YgO?(Id@5#Mw>u%0-bv2yfoe*TBmm5-jFaW2qMo6DwXyq8&tvz#C{bdCD<|=U765*_!AVl^&CkDbrMYQw!IEDAu6}3!%}Agx zc}yl4l_Kv_cS08XO|(9>Vc%()AD~7mLj_#FxM)ha8wC|KoV)actnrts)!tq>ntOf# zW9J~fe~0DaBCMLZW$K89H~OC#C+5{0n&t^g@}6g}P-rlsl ztWzR;=$ph3J%C2#ppp|GDBN7ZCfdJ2UUPjXuE~y`aBk^D;sEhk1H%TcIJ%MgRtS=qNt2IJjr9(_|J3XR5+0ZwIKZ)H zxoojHpC1k2ony>HlUoHr*iN$K7>i^mJ$22->Rdg9^*OT_>!=o5i>cj#{})1^NB*x< z*~pq+9}HAw(k+;@>alPCal^ElYbO&8s?uSUHy4c7ZEcSmdGZn0v0eMqCUknP7x)-$ zzuL|{Z0l2P3{~A*P9f$|JLTnL7Kk;%mg?0sHYS^Hv)inY2Fr|p|8V+Wq#=IY zY0260A2{B+Y9|@glR!$J{A6pP7_})L;__;t0;p6%R2kuWMCfdefEsUcDx+TIq62r3 zIfUXIEDU@gqGW+8@qaz*ykkeI7KD&VOh?@r2^)ao0oRw_N34Ei_8M#sS`l+8!R$-O z?J;X0m`{x?6as`dmLR-i`*-QLubHV0OTgBT+#kzOBMv`Kh%$;41bhk0fF=IOIOnU7@0R_O3l8xDh9qzY%ll=T*kr0PkS-k3@sxM$c} zC#Lt6g-7_cS5`>D(5(O@zP_2l!a?H^FZ1$+`B8a=%#8^eId}_zc!TKrfgB=>>EOlc zc~m%K5S}ubLOAI0LZeR`mWj#o3P>0w}Za7n3$(geS z;Q>6a5ZlD`?)cFvcZpfAU)w)QaOugkIDI}hgB33PH;S&qf{V9>vAw2_w{)I+)Cd?6 z!ou8%)X=UQvi+W$QRAsMwD9Kz0dI5T(w388lWV~s_+r>8N6_TAX%d2|L|} z2?*yE^}!u-gV?jAlyUz&1m_Iwd$(=WeD~n!;i5kJ`mDO*42#VRSam6>=^qua_;(U( z*1*=I{u0+@pC_=6RN&G1vJXQ45EFxA4$Ummq7c$Mrx+^aZSp%lf0}A7LG#iB)muf{F*i^5w9=5v9yl7}*s3lL=3+OB_|K={ zK_(B)_OX6UKGbnxs3i3_b5pPTMJ0)Fi)VYPI$LN&x3Jp8u^1_p(%fU~nSGz^@RF8) zHGAoH_mN*|p+BT};)1_*dUq44tMP-h92PTkX540#XZglcgFEP3b+u0**kHL}4{43) z^2Bjx@=!7yJ=-!pdU!gLkbSKPAPkL)^Np$fIc!1nSkgJzRksL;0XEp>DA;b+xkr6> zKD$)83^w2~@cfmY>>G4|ZVznx;YuiENwJ=OxMNURfn3?A;n7ug;v{?p2yn4c0GUFO ztEP=lNx-Yz=9)z=_YsJZbt36F`CK}V7EIYLRTCIorM{VP&t)s;TmmQxbgtm-Bj_O0 z;cXVx%h`rVSx0!3G#A#@DW~B(^XXtxhj4fzDq%u1M9IyerL^tZ39#^mW~cbWnxa#f zyLA|U<iQBs>;@;CdOmMi>IfMkPQ@%VY~$EcKZtL$aV!R&ea z$H;HbKHR`AA>lwb09Nx=_s2*D=zqD2N5GfK2nWO0Op-7b1F^& zt(Ymvfn8VxMV5CWVPL>FasRUwD;Ji4vTc~9Z=a>q1WinA6))k*P-lY-(0tM(Y4?)j z_|uY4eIrBvN$;|zddRwHHa(dPbY1CAA>3t4oyIxp?iR0saD7E-Pl%hhlN^8kjVr5$ zu)OV^1q>h(ir8)zFp1n?h6&4%>(X*L@hu3QtWqEW-`*SGiKSlml)HXVj)@US@6`k1 zs4YD((U7{%qyGPA92{H5{sgZn-&0pBxWz)+y?Q~WY&!(Bx$xThOu(thVf{6$m0sW4?BCtHJSVw}*(`q#&t z;JWzc$!<@7O}GCctZ?oN-=i4J4+p~3mh58Z-`sYltsjN^)0-9wZ0ofv@Ric|m)ey( z*g+g8Yn&qwx|7-knW8^7U4~I92ZfNl(mRCh`31>vfaa)asW&>lC_D?TGj#mm_PJve z{SjL(nqMQ4Vy5mq7|=rXsi_$AW$8yWjjQtFM?{6rP>g&_#86W73sqmt1Vtuv#%%Rw z;`pSBjFoeuOpbP&otxNJn2w=L(xv%cu3VolLa!1}zPTMRs!~O>)07gDKn$|!1*f{; z%l!^=$5LuOygfy<476!TSTnvjIjBzb4uL_}NQC7X;;sa-4ut2?1N<=L`d5O1_&czG zw!LaKkY&0@z!>1p&C4%VJ!Tb|x00}_4Qy`K zV%OM)o%jV(-S@~TqD#3t{ zP%M28?Y2VI!O}0AwuSHSA_DNl-NKIufelMWBtK;7Tysf@{HPaHel9OtsziXZ4Bg>*M{BI8e;p{cE{6s>RiQ@|gQd13 zKjM-7_d;Xu+JH3bV+_|YIisb3e`zH>=#cpZRc22;PWjdHzRZI*uBIE{W}kKTkRSy3 zkGJN;J#$d!;;-{+qt{Eq5tCJ7vB+GIdzI;z#}fYe$>Cn8crlfI%c(#QGUjF4vV0SA z`lqCG-^ufLatbz0Dx5);8GMn%*R@i3jo7?F8NTk=X&}$9>zr)IfLrxLHp)^v3j8Id z<`*e;+SHBfEU{@fVSXZ&KDMkK?*(Y@a!$LT$wdwV%^ftx|Kp@iW`g! z*VjATV!3?Y=EE+asp-i}KLjLK_Dx~u_KMJlSWCqx*m7j5EJ7If*FCcA0k9ph9(+Jl zS+Dxz*xZ3MKW0^-1VJWfzV~MzTDejDSr~}O@c|CB1}Sf&Q+8-uIq|muJnR;`O1rOu z>R8`R+!@!cMU9pAry$LN;BB552_K6fut1c-$71%bY@kQu1R@NLkmohYah2$nI9GDhJ{6NpUi!3;l^3b0kQh{q-1j-+nxz30Fhu8~h$g7hfl7Rf6%$U=W zlTf4B>Cjuc8O;$8w!$SZyY1kXh+_Xz$2M~J;p9yY&QKnHRy=x-CgJWWOUwZi1E>s~ zEAP1Fy092Mz2U9FWQ-)rGxtH7!9MF)F&cG$=yg{s_$_nZqupb0t1o+CWJ~xKQHUH= zAKiyqx{oQy?zwwD6NEsMQhKEF52;-r;7b(NWkiBR!&Sd?v z^`bp$b^P!xI{@xAG09dy=KkL}($M+m#A7~sK+F5UBM{=J4S4loSQtIyl#iDBa1DfL z<{SuW{a|RUjCCMa!oKqk#6RLbW^wW8OVWh=#B0$ijhV!N9@f6sN-kXaVC6Ui<;u`M z)*mmmHCRAKIGmQBPZ2R-TcNyvbikO<}I{#MzA({+lAMr@O zYzg46*_zpmXq67D=Ol>Bmf}VzocAL* zWitd{CER;K8R)=p?N*MW3l(=4FUY^{5B>f;l`v79*M8mq;BKm4{zd*!9ZSx@6&$Pk zjP$WB*ddct8L!c3V1syqL*Ug2iwB|6!c}&M6SU#KZ?uvg)q0)mQ<>>`Oi_o?V{Id3 zCx{9-R-a%PX)T1u(VBD7y%Zea7Qn*MoHhuwtV{oK*OkCA+WM5QJ*-L7?3of}GAEdF z8Kt~E1x|5m;Uu2z_-cjeA_1{xP*$2pPJQU;ZUlL=e&_z*KE0&(;7Z|;+*d8L0t*GJ zzl;urn;rfaTEEW-Qp~3Fs`4TIrEc(rhd}ip0psdO=@k(YvA}F6fS+^V)QlUI%bm?H$d5;RI ztW=w9tL6n@l!vTN6fC=^a!#|q&KqvYiZEKd> zjd%InE}bNF*|F-hYq+A77z3}?MfQr0Zgbl-7x}EIDXeLs`Q>%m&FB_7Zq6jDXJGH7 z-R}?#*8c}X`>;pGL6XL*UB2#iE?++movO(Gn33@l5EHzItF+;sEpHZxVPj#eBpV)V z?@yDbAB$2Ua3fSc#3L`96+KzxiVe_SLqM^xvR7=DcONIaEu`u1+9rG^3%0Xl3WG>V za92YX)9HWn>{G&|6pNXo3;&93hUqq0djrI5rhf|~DKum-Qb-;zGTQM~LC&ffp?S*c zT|SvZLK15D3+Ts1SI$xrSYqodYI4ti(M??QpF^@3M`s>$I>tMFe+7c@=r>#E4#Q zIa99RWyGmxG`xNoKM**Sm8>(G%P$U7%?T9uzAc5En~oU%?k&8&rJhg}2pguj=9EfV z=%X0}eZzmu+8%p71UEFvv>6X6H<9xC(uwBz*U-(46Lju7u|U8o`w88y#C- zqxBgU2R|4+^Y#ye?&gY>FCR9S)f?}mh4hfagi463L}yHdR2Cmo*EQ`Ebx zcY-qLJHWQxW4+t5NIGWq^2K4~72N`>JS{yy5ncg;In4L11xP%x#4t`v{9^AQ>&G3J zYjYhucj(ffljmHk1^@L%`LXLhIam)0>kM|2`U->wH{k(?4#9oP+^kxpDTLB05$k}Y zfljck848$kHDBd8xKrFdEiuJs?apMP=agjS5Ca5uWx{!=t!enuM)$rlqVo){NhbHc z3ld-c)Hf3J%#3m?GTw!ZGYFAapu)Pe%X`2Qsd2=Tzqx+6L2^SC6^u%2Ol{3fIUyUA zRh+;^s9vj0)YbmLgnh&KDS>TSx=E1Bz}l z{I}b`43?jdmatC!$r{kz^NsE~kPd4}#;_&B1i<dK zR2izlS@kTU0Va5OM*c~uwMIB;Sf4%Yqd8D5??7K(TP-683!4)!I z7^u#tei6~K3Pg`oJEugI_v5H8!iBF9nd~(s=0KUVuO0gFn!Ps8__xwVIGj~NOwT-@ zYUOKl^7FtgWc4p@Ab7q{lRB=cc~2EpG((`_^#x_;F?TgQAy4Jbg{8ilJjQ~SF5Fhz zKS|Eeg&Lku!Cms1ZZu;@^WO$?qmlfDGfuH?im~H|vSe0#_emEz@Jt--Ko2(L>}0Ij zU5(lv`R;dYC?+JB38|X0ju0SeWRr&0J1r_4TC`bAc$cvF8qgn!%W*c9*d%Gk($U3{aVb!bF+%?B(le; zp{>ic?SfpmT#~2~w31##E)KGosZ(jnoQYz-0%Q?C&GyY=ZLK-tQ^p7VY1LLefzv34 zS+VUO2v&W;k(N3zgC9|}x4sAFd~VK>0uaw!;zaM5?-zdBlraP0 zPA@u6`CRqs(Q@N^n^DC%yo2+dmq!CJfBL!u&(e=`7A`aqf2T&3zj?e?$E4kCSo zUuS5qgV~jDI&FLKiub_>?Tc=!F z3Y8DgSA91n@jE{r<~BjJzS^*oIa1y4APRZ(BV5!+?n9KA_2e`1o4q7SEGJ6d8Yx zg~P1l?Bvj+MyPf<>g*SX;oVdFGCSqvAl#e5_(cz=26TdnP2g5n=XWqtA6w`_pCpJz z|2{$3D??Ed)^|(rxj_f;5o}s=56+T<^&{~S(?)zJR8+~&5UUGj(Bsy3h8zqz(NEaE zy2+w&Pk*B-SwyU<=@P?=0VRJza0ldJu?ZumQ~^59+WlMovg#&JQ2jl(lU910erUNL zBUWmB7`Oc-^=2lnn4$3Y^p@gD@@Pb%it+CvB-g;XJwhT-BRf&P=rM=v5Kv}IjByAu z+GhhsNB?B`AraWp#S_*Uc5^bWc|R>1k?Ekoq@^qX%cm3hmiZ*YcaWe6!d!Ww+(xOB}0V|6Kil2-Cm1h=A-P&mGF(CF+1csdi5Pc1_QC?^g>4-&u9h zSfBGqP@Y3&jajdon>q2!0y|@RCBFey^Z-}}6GV&6+KqD55V1@=B+f3A-+=;bQY5&8 z9m=7x`E=`$y8{?;iv`;uHIluDi<1!mdi#`q9b?52g%G;68wjF4PDr2dUh{)N%?jrO zm&X*}**7EoV5~Pw0T1d9mCX41qQB)Vuz$=J;)^a!`=7-9NCLE1Ze|6`Sr9fo`NA@N zS4tWcF;$qn-#%t}jC+kbU0|Ksg#$JRn$$`JGdhv}Kv`6}?#~&0>>Y{0nBH z79-7gGvoO5@@3O5$o1m>R6<*i_|Nq=TUHkafpG{zp;u+gv@NV$!!X+j*|=tA=_ZIc zL~R6CQpBJe>kqE3Ecjin2)?s)4w*1d+)&1P50N(3=l2h&VFvd z(U0)wA?-?!?Yjcn%*MjSv@o$j0cW!#h+EM$d~iN2oqZm zJFdc6V+c}`QR;NE&3z9vJY8T6q(IXC-ThLAy2K64oz{q1HQRs!%I7yLm_N-JDKMLI ztdZpvMm@b;JtFdP6Yk&2owc89Ug%K`(fK@;eVWRDIc}X%#72l3d=l6zC`{=q7@u$z zB~k1vV4YuM3+iHL=`wyPV6TZhl#oqqycIFunAQ6>JMhu7>lR3sLB7%l1ch3tV@2Ml3yw^I^2cQHT z?|t}#Zg}%;8Ly5yijQ&}M}umJGG{fagY9giT}X*%>OO;H+FQb2O#%ypG0=8lgKAT; z-n$SaM0M|?wQqP~?KD*gW#?g>?{6i?)lFwulI;syRSw@0v8k6U!DjUJTYvf>zF~z< zq-Bxs-|l*&q&$#X;WTD>DyxLs!r9-m6nLhmVR;S9|DK+Ws&_sS5ir zoj^!h;G3&4c)RxVZ4ttguS7{%q7lVe{0{>q$COmv`)l)@GoiJGd>-gd7g1U_adlH{ zBDfNdmOe@5>~+Xe*5$~U-9bF{LomCK8kl*#78ZYLzGlpr8oM#`IqDppk^6Ux5094{ z9dr})<~ewgDl~IQ182*93MFsZl{FD$EYI7#ts z-L=vhkF@MX8Rq9x2lg!=2Ww!SH{Z?lfjnTs*ywX;X~0Q%P$+HoHyVz*#0ko=MU4j* zo^p6Bu##O{~~lp~BYOfY>MyF&giuYHBLLupI)qbT6Gb8`O0qGE7t zQ_0w?n;eHok%J!vJ*OLUoNOP({KifO;%3OVzXV3{C%8iw>zKn6X)NZ@)$8wl>6X1m zq*fAD6GF*BoI(#9ptzbECamY7!UD8M$vOt6gD33xL_%y*qA#t;(uvi)M5N2nY+MXKk)Cn{C4+HP2?ql{Ws)$ki@XrrL!uE~{@B`-LtMh~CHER)&`p_@T2tn;KoIN+6W<47y6g>V?nXTQ^}lahWjwD1+4K!JEGS4mOdnWL{nN z+-O>rXNAzH$qU6|jnbG$=c1L{n`?x*E`PLuWX!QA!()t5r8hpUopM`);V}&_pEy4@ zM0IT^hTiEz+MHwhTKlziMrv(~b?nAhyYEsD#G}ZZnSN(Ci}Gb6+4MD(YmmvT!GM&VU4WF{D+pGjpAJ|lQJrNo z)i#1{e?jEK5(SsIPtDpncSjFa2w%?Zg&p+j#y&<@rxfg5gSrkpcI%5bNXdlK@{k)N zCc(T~FJ{5;>&=Rl3iKnl@>MgewF?kJR1h%BPB0_vU z@S)OM!CVQE#|TIe{y~xIXvl`Ix}SjSz(FJr+R!E?8PdL&YQWKR&G*vY zX5EJ(^M|6KRsS{LSH-&jqTr_Jhg826(CNFjj{Y=MiqgB3BxTia0#OH$71b&AaN(sx zEg*1EYOqXu;l)?D^ItrDniI^*sFt@`ow@`-TTkw ze};g|@JePl1~bl&lR{>s-S1&16LUifA=udPzvhNRIOB{3Hk#8`aOsV|Nbxh-zAzBv zu*z=Z4>9+RIK(3aNpM=*k5e-%EeegTNnr=!$bhUZOZ-FZ z-y8jvq|(0{`w9YxJF=x=w(4_E-ufJJCV<>uv<0PHsr3FQ#$;fQhibG&#lg=n zB%3ggLH@v%KvXQD9pyN=|7YVSWTm|j_7f%7O{!!eOG}F=@kVWS3 z4})o(IMPL!KqtTF7%_{L-=@A0C`JVqd7h4a-|?@o-|qi^@V4_jtW9VMrncu=g3XVE zpCN+v7M1V2K?v!>ARF_XJ6Q`722^+b0oM7k!TH*VWc`46xE8@80K!5=Q-a^F2lId; zTS;)Qz)igY(p3Jt(M->^B>N#pG71^f^N`0F zt|N6)+06dXY?~n@1LB1nIlTEL-$}KnG@L4&2PC6Y*krGF`_%YfSfC PHA~A|d8S+_Utj;(Rckm% diff --git a/icon.ico b/icon.ico index 6fb67f6b3099987ec26a04fc8d9b31362b30342a..1bd21851c819dedf5856092fb2dfb649278199b2 100644 GIT binary patch literal 270398 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

~okELfpAfWP>#+SPKB3KqYIWXBLc&n*QNWi*KIH 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 AfB*mh diff --git a/icon.png b/icon.png index 6bfef5fcb445faf19bf7db73bac1fa3d8ea2512d..93f2932570ab6ab060c0a74de25501594dbc34f9 100644 GIT binary patch literal 15161 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 literal 8739 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 diff --git a/image_utils.py b/image_utils.py index 2a0c461..d138708 100644 --- a/image_utils.py +++ b/image_utils.py @@ -9,9 +9,9 @@ try: image.thumbnail(size, im.ANTIALIAS) offset = [0,0] if image.size[0] >= image.size[1]: - offset[1] = back.size[1]/2-image.size[1]/2 + offset[1] = int(back.size[1]/2-image.size[1]/2) else: - offset[0] = back.size[0]/2-image.size[0]/2 + offset[0] = int(back.size[0]/2-image.size[0]/2) back.paste(image, tuple(offset)) back.save(output, image.format) contents = output.getvalue() diff --git a/png.py b/png.py index d93d0af..db6da12 100644 --- a/png.py +++ b/png.py @@ -1,5 +1,7 @@ #!/usr/bin/env python +from __future__ import print_function + # png.py - PNG encoder/decoder in pure Python # # Copyright (C) 2006 Johann C. Rocholl @@ -142,24 +144,21 @@ And now, my famous members -------------------------- """ -# http://www.python.org/doc/2.2.3/whatsnew/node5.html -from __future__ import generators +__version__ = "0.0.18" -__version__ = "0.0.17" - -from array import array -try: # See :pyver:old - import itertools -except ImportError: - pass +import itertools import math # http://www.python.org/doc/2.4.4/lib/module-operator.html import operator import struct import sys -import zlib # http://www.python.org/doc/2.4.4/lib/module-warnings.html import warnings +import zlib + +from array import array +from functools import reduce + try: # `cpngfilters` is a Cython module: it must be compiled by # Cython for this import to work. @@ -188,52 +187,13 @@ _adam7 = ((0, 0, 8, 8), def group(s, n): # See http://www.python.org/doc/2.6/library/functions.html#zip - return zip(*[iter(s)]*n) + return list(zip(*[iter(s)]*n)) def isarray(x): - """Same as ``isinstance(x, array)`` except on Python 2.2, where it - always returns ``False``. This helps PyPNG work on Python 2.2. - """ + return isinstance(x, array) - try: - return isinstance(x, array) - except TypeError: - # Because on Python 2.2 array.array is not a type. - return False - -try: - array.tobytes -except AttributeError: - try: # see :pyver:old - array.tostring - except AttributeError: - def tostring(row): - l = len(row) - return struct.pack('%dB' % l, *row) - else: - def tostring(row): - """Convert row of bytes to string. Expects `row` to be an - ``array``. - """ - return row.tostring() -else: - def tostring(row): - """ Python3 definition, array.tostring() is deprecated in Python3 - """ - return row.tobytes() - -# Conditionally convert to bytes. Works on Python 2 and Python 3. -try: - bytes('', 'ascii') - def strtobytes(x): return bytes(x, 'iso8859-1') - def bytestostr(x): return str(x, 'iso8859-1') -except (NameError, TypeError): - # We get NameError when bytes() does not exist (most Python - # 2.x versions), and TypeError when bytes() exists but is on - # Python 2.x (when it is an alias for str() and takes at most - # one argument). - strtobytes = str - bytestostr = str +def tostring(row): + return row.tostring() def interleave_planes(ipixels, apixels, ipsize, apsize): """ @@ -325,7 +285,7 @@ def check_color(c, greyscale, which): return c if greyscale: try: - l = len(c) + len(c) except TypeError: c = (c,) if len(c) != 1: @@ -376,7 +336,10 @@ class Writer: planes=None, colormap=None, maxval=None, - chunk_limit=2**20): + chunk_limit=2**20, + x_pixels_per_unit = None, + y_pixels_per_unit = None, + unit_is_meter = False): """ Create a PNG encoder object. @@ -407,6 +370,16 @@ class Writer: Create an interlaced image. chunk_limit Write multiple ``IDAT`` chunks to save memory. + x_pixels_per_unit + Number of pixels a unit along the x axis (write a + `pHYs` chunk). + y_pixels_per_unit + Number of pixels a unit along the y axis (write a + `pHYs` chunk). Along with `x_pixel_unit`, this gives + the pixel size ratio. + unit_is_meter + `True` to indicate that the unit (for the `pHYs` + chunk) is metre. The image size (in pixels) can be specified either by using the `width` and `height` arguments, or with the single `size` @@ -442,13 +415,14 @@ class Writer: is slightly different; it would be awkward to press the `bitdepth` argument into service for this.) - The `palette` option, when specified, causes a colour mapped - image to be created: the PNG colour type is set to 3; greyscale - must not be set; alpha must not be set; transparent must not be - set; the bit depth must be 1,2,4, or 8. When a colour mapped - image is created, the pixel values are palette indexes and - the `bitdepth` argument specifies the size of these indexes - (not the size of the colour values in the palette). + The `palette` option, when specified, causes a colour + mapped image to be created: the PNG colour type is set to 3; + `greyscale` must not be set; `alpha` must not be set; + `transparent` must not be set; the bit depth must be 1,2,4, + or 8. When a colour mapped image is created, the pixel values + are palette indexes and the `bitdepth` argument specifies the + size of these indexes (not the size of the colour values in + the palette). The palette argument value should be a sequence of 3- or 4-tuples. 3-tuples specify RGB palette entries; 4-tuples @@ -466,7 +440,7 @@ class Writer: a simple integer (or singleton tuple) for a greyscale image. If specified, the `gamma` parameter must be a positive number - (generally, a float). A ``gAMA`` chunk will be created. + (generally, a `float`). A ``gAMA`` chunk will be created. Note that this will not change the values of the pixels as they appear in the PNG file, they are assumed to have already been converted appropriately for the gamma specified. @@ -531,6 +505,7 @@ class Writer: bitdepth) self.rescale = None + palette = check_palette(palette) if palette: if bitdepth not in (1,2,4,8): raise ValueError("with palette, bitdepth must be 1, 2, 4, or 8") @@ -588,7 +563,10 @@ class Writer: self.compression = compression self.chunk_limit = chunk_limit self.interlace = bool(interlace) - self.palette = check_palette(palette) + self.palette = palette + self.x_pixels_per_unit = x_pixels_per_unit + self.y_pixels_per_unit = y_pixels_per_unit + self.unit_is_meter = bool(unit_is_meter) self.color_type = 4*self.alpha + 2*(not greyscale) + 1*self.colormap assert self.color_type in (0,2,3,4,6) @@ -667,7 +645,7 @@ class Writer: outfile.write(_signature) # http://www.w3.org/TR/PNG/#11IHDR - write_chunk(outfile, 'IHDR', + write_chunk(outfile, b'IHDR', struct.pack("!2I5B", self.width, self.height, self.bitdepth, self.color_type, 0, 0, self.interlace)) @@ -675,13 +653,13 @@ class Writer: # See :chunk:order # http://www.w3.org/TR/PNG/#11gAMA if self.gamma is not None: - write_chunk(outfile, 'gAMA', + write_chunk(outfile, b'gAMA', struct.pack("!L", int(round(self.gamma*1e5)))) # See :chunk:order # http://www.w3.org/TR/PNG/#11sBIT if self.rescale: - write_chunk(outfile, 'sBIT', + write_chunk(outfile, b'sBIT', struct.pack('%dB' % self.planes, *[self.rescale[0]]*self.planes)) @@ -691,30 +669,35 @@ class Writer: # See http://www.w3.org/TR/PNG/#5ChunkOrdering if self.palette: p,t = self.make_palette() - write_chunk(outfile, 'PLTE', p) + write_chunk(outfile, b'PLTE', p) if t: # tRNS chunk is optional. Only needed if palette entries # have alpha. - write_chunk(outfile, 'tRNS', t) + write_chunk(outfile, b'tRNS', t) # http://www.w3.org/TR/PNG/#11tRNS if self.transparent is not None: if self.greyscale: - write_chunk(outfile, 'tRNS', + write_chunk(outfile, b'tRNS', struct.pack("!1H", *self.transparent)) else: - write_chunk(outfile, 'tRNS', + write_chunk(outfile, b'tRNS', struct.pack("!3H", *self.transparent)) # http://www.w3.org/TR/PNG/#11bKGD if self.background is not None: if self.greyscale: - write_chunk(outfile, 'bKGD', + write_chunk(outfile, b'bKGD', struct.pack("!1H", *self.background)) else: - write_chunk(outfile, 'bKGD', + write_chunk(outfile, b'bKGD', struct.pack("!3H", *self.background)) + # http://www.w3.org/TR/PNG/#11pHYs + if self.x_pixels_per_unit is not None and self.y_pixels_per_unit is not None: + tup = (self.x_pixels_per_unit, self.y_pixels_per_unit, int(self.unit_is_meter)) + write_chunk(outfile, b'pHYs', struct.pack("!LLB",*tup)) + # http://www.w3.org/TR/PNG/#11IDAT if self.compression is not None: compressor = zlib.compressobj(self.compression) @@ -746,15 +729,15 @@ class Writer: a.extend([0]*int(extra)) # Pack into bytes l = group(a, spb) - l = map(lambda e: reduce(lambda x,y: - (x << self.bitdepth) + y, e), l) + l = [reduce(lambda x,y: + (x << self.bitdepth) + y, e) for e in l] data.extend(l) if self.rescale: oldextend = extend factor = \ float(2**self.rescale[1]-1) / float(2**self.rescale[0]-1) def extend(sl): - oldextend(map(lambda x: int(round(factor*x)), sl)) + oldextend([int(round(factor*x)) for x in sl]) # Build the first row, testing mostly to see if we need to # changed the extend function to cope with NumPy integer types @@ -769,7 +752,7 @@ class Writer: # :todo: Certain exceptions in the call to ``.next()`` or the # following try would indicate no row data supplied. # Should catch. - i,row = enumrows.next() + i,row = next(enumrows) try: # If this fails... extend(row) @@ -779,7 +762,7 @@ class Writer: # types, there are probably lots of other, unknown, "nearly" # int types it works for. def wrapmapint(f): - return lambda sl: f(map(int, sl)) + return lambda sl: f([int(x) for x in sl]) extend = wrapmapint(extend) del wrapmapint extend(row) @@ -795,7 +778,7 @@ class Writer: if len(data) > self.chunk_limit: compressed = compressor.compress(tostring(data)) if len(compressed): - write_chunk(outfile, 'IDAT', compressed) + write_chunk(outfile, b'IDAT', compressed) # Because of our very witty definition of ``extend``, # above, we must re-use the same ``data`` object. Hence # we use ``del`` to empty this one, rather than create a @@ -804,12 +787,12 @@ class Writer: if len(data): compressed = compressor.compress(tostring(data)) else: - compressed = strtobytes('') + compressed = b'' flushed = compressor.flush() if len(compressed) or len(flushed): - write_chunk(outfile, 'IDAT', compressed + flushed) + write_chunk(outfile, b'IDAT', compressed + flushed) # http://www.w3.org/TR/PNG/#11IEND - write_chunk(outfile, 'IEND') + write_chunk(outfile, b'IEND') return i+1 def write_array(self, outfile, pixels): @@ -956,7 +939,7 @@ class Writer: pixels[offset+i:end_offset:skip] yield row -def write_chunk(outfile, tag, data=strtobytes('')): +def write_chunk(outfile, tag, data=b''): """ Write a PNG chunk to the output file, including length and checksum. @@ -964,7 +947,6 @@ def write_chunk(outfile, tag, data=strtobytes('')): # http://www.w3.org/TR/PNG/#5Chunk-layout outfile.write(struct.pack("!I", len(data))) - tag = strtobytes(tag) outfile.write(tag) outfile.write(data) checksum = zlib.crc32(tag) @@ -1071,13 +1053,6 @@ def from_array(a, mode=None, info={}): array. One application of this function is easy PIL-style saving: ``png.from_array(pixels, 'L').save('foo.png')``. - .. note : - - The use of the term *3-dimensional* is for marketing purposes - only. It doesn't actually work. Please bear with us. Meanwhile - enjoy the complimentary snacks (on request) and please use a - 2-dimensional array. - Unless they are specified using the *info* parameter, the PNG's height and width are taken from the array size. For a 3 dimensional array the first axis is the height; the second axis is the width; @@ -1086,7 +1061,7 @@ def from_array(a, mode=None, info={}): dimensional arrays the first axis is the height, but the second axis is ``width*channels``, so an RGB image that is 16 pixels high and 8 wide will use a 2-dimensional array that is 16x24 (each row will be - 8*3==24 sample values). + 8*3 = 24 sample values). *mode* is a string that specifies the image colour format in a PIL-style mode. It can be: @@ -1130,7 +1105,7 @@ def from_array(a, mode=None, info={}): The *info* parameter is a dictionary that can be used to specify metadata (in the same style as the arguments to the - :class:``png.Writer`` class). For this function the keys that are + :class:`png.Writer` class). For this function the keys that are useful are: height @@ -1228,7 +1203,7 @@ def from_array(a, mode=None, info={}): # first row, which requires that we take a copy of its iterator. # We may also need the first row to derive width and bitdepth. a,t = itertools.tee(a) - row = t.next() + row = next(t) del t try: row[0][0] @@ -1244,8 +1219,9 @@ def from_array(a, mode=None, info={}): width = len(row) // planes info['width'] = width - # Not implemented yet - assert not threed + if threed: + # Flatten the threed rows + a = (itertools.chain.from_iterable(x) for x in a) if 'bitdepth' not in info: try: @@ -1332,6 +1308,13 @@ class _readable: self.offset += n return r +try: + str(b'dummy', 'ascii') +except TypeError: + as_str = str +else: + def as_str(x): + return str(x, 'ascii') class Reader: """ @@ -1388,9 +1371,9 @@ class Reader: def chunk(self, seek=None, lenient=False): """ Read the next PNG chunk from the input file; returns a - (*type*,*data*) tuple. *type* is the chunk's type as a string - (all PNG chunk types are 4 characters long). *data* is the - chunk's data content, as a string. + (*type*, *data*) tuple. *type* is the chunk's type as a + byte string (all PNG chunk types are 4 bytes long). + *data* is the chunk's data content, as a byte string. If the optional `seek` argument is specified then it will keep reading chunks until it either runs @@ -1398,7 +1381,7 @@ class Reader: that in general the order of chunks in PNGs is unspecified, so using `seek` can cause you to miss chunks. - If the optional `lenient` argument evaluates to True, + If the optional `lenient` argument evaluates to `True`, checksum failures will raise warnings rather than exceptions. """ @@ -1408,7 +1391,7 @@ class Reader: # http://www.w3.org/TR/PNG/#5Chunk-layout if not self.atchunk: self.atchunk = self.chunklentype() - length,type = self.atchunk + length, type = self.atchunk self.atchunk = None data = self.file.read(length) if len(data) != length: @@ -1416,10 +1399,10 @@ class Reader: % (type, length)) checksum = self.file.read(4) if len(checksum) != 4: - raise ValueError('Chunk %s too short for checksum.', tag) + raise ChunkError('Chunk %s too short for checksum.' % type) if seek and type != seek: continue - verify = zlib.crc32(strtobytes(type)) + verify = zlib.crc32(type) verify = zlib.crc32(data, verify) # Whether the output from zlib.crc32 is signed or not varies # according to hideous implementation details, see @@ -1446,7 +1429,7 @@ class Reader: while True: t,v = self.chunk() yield t,v - if t == 'IEND': + if t == b'IEND': break def undo_filter(self, filter_type, scanline, previous): @@ -1631,12 +1614,13 @@ class Reader: spb = 8//self.bitdepth out = array('B') mask = 2**self.bitdepth - 1 - shifts = map(self.bitdepth.__mul__, reversed(range(spb))) + shifts = [self.bitdepth * i + for i in reversed(list(range(spb)))] for o in raw: - out.extend(map(lambda i: mask&(o>>i), shifts)) + out.extend([mask&(o>>i) for i in shifts]) return out[:width] - return itertools.imap(asvalues, rows) + return map(asvalues, rows) def serialtoflat(self, bytes, width=None): """Convert serial format (byte stream) pixel data to flat row @@ -1656,7 +1640,7 @@ class Reader: spb = 8//self.bitdepth out = array('B') mask = 2**self.bitdepth - 1 - shifts = map(self.bitdepth.__mul__, reversed(range(spb))) + shifts = list(map(self.bitdepth.__mul__, reversed(list(range(spb))))) l = width for o in bytes: out.extend([(mask&(o>>s)) for s in shifts][:l]) @@ -1712,7 +1696,7 @@ class Reader: chunks that precede the ``IDAT`` chunk are read and either processed for metadata or discarded. - If the optional `lenient` argument evaluates to True, checksum + If the optional `lenient` argument evaluates to `True`, checksum failures will raise warnings rather than exceptions. """ @@ -1724,7 +1708,7 @@ class Reader: if self.atchunk is None: raise FormatError( 'This PNG file has no IDAT chunks.') - if self.atchunk[1] == 'IDAT': + if self.atchunk[1] == b'IDAT': return self.process_chunk(lenient=lenient) @@ -1742,7 +1726,6 @@ class Reader: raise FormatError( 'End of file whilst reading chunk length and type.') length,type = struct.unpack('!I4s', x) - type = bytestostr(type) if length > 2**31-1: raise FormatError('Chunk %s is too large: %d.' % (type,length)) return length,type @@ -1750,14 +1733,14 @@ class Reader: def process_chunk(self, lenient=False): """Process the next chunk and its data. This only processes the following chunk types, all others are ignored: ``IHDR``, - ``PLTE``, ``bKGD``, ``tRNS``, ``gAMA``, ``sBIT``. + ``PLTE``, ``bKGD``, ``tRNS``, ``gAMA``, ``sBIT``, ``pHYs``. - If the optional `lenient` argument evaluates to True, + If the optional `lenient` argument evaluates to `True`, checksum failures will raise warnings rather than exceptions. """ type, data = self.chunk(lenient=lenient) - method = '_process_' + type + method = '_process_' + as_str(type) m = getattr(self, method, None) if m: m(data) @@ -1869,6 +1852,15 @@ class Reader: not self.colormap and len(data) != self.planes): raise FormatError("sBIT chunk has incorrect length.") + def _process_pHYs(self, data): + # http://www.w3.org/TR/PNG/#11pHYs + self.phys = data + fmt = "!LLB" + if len(data) != struct.calcsize(fmt): + raise FormatError("pHYs chunk has incorrect length.") + self.x_pixels_per_unit, self.y_pixels_per_unit, unit = struct.unpack(fmt,data) + self.unit_is_meter = bool(unit) + def read(self, lenient=False): """ Read the PNG file and decode it. Returns (`width`, `height`, @@ -1889,12 +1881,12 @@ class Reader: type, data = self.chunk(lenient=lenient) except ValueError as e: raise ChunkError(e.args[0]) - if type == 'IEND': + if type == b'IEND': # http://www.w3.org/TR/PNG/#11IEND break - if type != 'IDAT': + if type != b'IDAT': continue - # type == 'IDAT' + # type == b'IDAT' # http://www.w3.org/TR/PNG/#11IDAT if self.colormap and not self.plte: warnings.warn("PLTE chunk is required before IDAT chunk") @@ -1925,7 +1917,7 @@ class Reader: arraycode = 'BH'[self.bitdepth>8] # Like :meth:`group` but producing an array.array object for # each row. - pixels = itertools.imap(lambda *row: array(arraycode, row), + pixels = map(lambda *row: array(arraycode, row), *[iter(self.deinterlace(raw))]*self.width*self.planes) else: pixels = self.iterboxed(self.iterstraight(raw)) @@ -1980,7 +1972,7 @@ class Reader: if self.trns or alpha == 'force': trns = array('B', self.trns or '') trns.extend([255]*(len(plte)-len(trns))) - plte = map(operator.add, plte, group(trns, 1)) + plte = list(map(operator.add, plte, group(trns, 1))) return plte def asDirect(self): @@ -2037,7 +2029,7 @@ class Reader: plte = self.palette() def iterpal(pixels): for row in pixels: - row = map(plte.__getitem__, row) + row = [plte[x] for x in row] yield array('B', itertools.chain(*row)) pixels = iterpal(pixels) elif self.trns: @@ -2064,7 +2056,7 @@ class Reader: row = group(row, planes) opa = map(it.__ne__, row) opa = map(maxval.__mul__, opa) - opa = zip(opa) # convert to 1-tuples + opa = list(zip(opa)) # convert to 1-tuples yield array(typecode, itertools.chain(*map(operator.add, row, opa))) pixels = itertrns(pixels) @@ -2084,7 +2076,7 @@ class Reader: meta['bitdepth'] = targetbitdepth def itershift(pixels): for row in pixels: - yield map(shift.__rrshift__, row) + yield [p >> shift for p in row] pixels = itershift(pixels) return x,y,pixels,meta @@ -2101,7 +2093,7 @@ class Reader: factor = float(maxval)/float(sourcemaxval) def iterfloat(): for row in pixels: - yield map(factor.__mul__, row) + yield [factor * p for p in row] return x,y,iterfloat(),info def _as_rescale(self, get, targetbitdepth): @@ -2114,7 +2106,7 @@ class Reader: meta['bitdepth'] = targetbitdepth def iterscale(): for row in pixels: - yield map(lambda x: int(round(x*factor)), row) + yield [int(round(x*factor)) for x in row] if maxval == targetmaxval: return width, height, pixels, meta else: @@ -2260,100 +2252,6 @@ def isinteger(x): return False -# === Legacy Version Support === - -# :pyver:old: PyPNG works on Python versions 2.3 and 2.2, but not -# without some awkward problems. Really PyPNG works on Python 2.4 (and -# above); it works on Pythons 2.3 and 2.2 by virtue of fixing up -# problems here. It's a bit ugly (which is why it's hidden down here). -# -# Generally the strategy is one of pretending that we're running on -# Python 2.4 (or above), and patching up the library support on earlier -# versions so that it looks enough like Python 2.4. When it comes to -# Python 2.2 there is one thing we cannot patch: extended slices -# http://www.python.org/doc/2.3/whatsnew/section-slices.html. -# Instead we simply declare that features that are implemented using -# extended slices will not work on Python 2.2. -# -# In order to work on Python 2.3 we fix up a recurring annoyance involving -# the array type. In Python 2.3 an array cannot be initialised with an -# array, and it cannot be extended with a list (or other sequence). -# Both of those are repeated issues in the code. Whilst I would not -# normally tolerate this sort of behaviour, here we "shim" a replacement -# for array into place (and hope no-one notices). You never read this. -# -# In an amusing case of warty hacks on top of warty hacks... the array -# shimming we try and do only works on Python 2.3 and above (you can't -# subclass array.array in Python 2.2). So to get it working on Python -# 2.2 we go for something much simpler and (probably) way slower. -try: - array('B').extend([]) - array('B', array('B')) -# :todo:(drj) Check that TypeError is correct for Python 2.3 -except TypeError: - # Expect to get here on Python 2.3 - try: - class _array_shim(array): - true_array = array - def __new__(cls, typecode, init=None): - super_new = super(_array_shim, cls).__new__ - it = super_new(cls, typecode) - if init is None: - return it - it.extend(init) - return it - def extend(self, extension): - super_extend = super(_array_shim, self).extend - if isinstance(extension, self.true_array): - return super_extend(extension) - if not isinstance(extension, (list, str)): - # Convert to list. Allows iterators to work. - extension = list(extension) - return super_extend(self.true_array(self.typecode, extension)) - array = _array_shim - except TypeError: - # Expect to get here on Python 2.2 - def array(typecode, init=()): - if type(init) == str: - return map(ord, init) - return list(init) - -# Further hacks to get it limping along on Python 2.2 -try: - enumerate -except NameError: - def enumerate(seq): - i=0 - for x in seq: - yield i,x - i += 1 - -try: - reversed -except NameError: - def reversed(l): - l = list(l) - l.reverse() - for x in l: - yield x - -try: - itertools -except NameError: - class _dummy_itertools: - pass - itertools = _dummy_itertools() - def _itertools_imap(f, seq): - for x in seq: - yield f(x) - itertools.imap = _itertools_imap - def _itertools_chain(*iterables): - for it in iterables: - for element in it: - yield element - itertools.chain = _itertools_chain - - # === Support for users without Cython === try: @@ -2462,20 +2360,19 @@ def read_pam_header(infile): header = dict() while True: l = infile.readline().strip() - if l == strtobytes('ENDHDR'): + if l == b'ENDHDR': break if not l: raise EOFError('PAM ended prematurely') - if l[0] == strtobytes('#'): + if l[0] == b'#': continue l = l.split(None, 1) if l[0] not in header: header[l[0]] = l[1] else: - header[l[0]] += strtobytes(' ') + l[1] + header[l[0]] += b' ' + l[1] - required = ['WIDTH', 'HEIGHT', 'DEPTH', 'MAXVAL'] - required = [strtobytes(x) for x in required] + required = [b'WIDTH', b'HEIGHT', b'DEPTH', b'MAXVAL'] WIDTH,HEIGHT,DEPTH,MAXVAL = required present = [x for x in required if x in header] if len(present) != len(required): @@ -2492,7 +2389,7 @@ def read_pam_header(infile): 'WIDTH, HEIGHT, DEPTH, MAXVAL must all be positive integers') return 'P7', width, height, depth, maxval -def read_pnm_header(infile, supported=('P5','P6')): +def read_pnm_header(infile, supported=(b'P5', b'P6')): """ Read a PNM header, returning (format,width,height,depth,maxval). `width` and `height` are in pixels. `depth` is the number of @@ -2504,20 +2401,18 @@ def read_pnm_header(infile, supported=('P5','P6')): # Generally, see http://netpbm.sourceforge.net/doc/ppm.html # and http://netpbm.sourceforge.net/doc/pam.html - supported = [strtobytes(x) for x in supported] - # Technically 'P7' must be followed by a newline, so by using # rstrip() we are being liberal in what we accept. I think this # is acceptable. type = infile.read(3).rstrip() if type not in supported: raise NotImplementedError('file format %s not supported' % type) - if type == strtobytes('P7'): + if type == b'P7': # PAM header parsing is completely different. return read_pam_header(infile) # Expected number of tokens in header (3 for P4, 4 for P6) expected = 4 - pbm = ('P1', 'P4') + pbm = (b'P1', b'P4') if type in pbm: expected = 3 header = [type] @@ -2540,7 +2435,7 @@ def read_pnm_header(infile, supported=('P5','P6')): c = getc() # Skip comments. while c == '#': - while c not in '\n\r': + while c not in b'\n\r': c = getc() if not c.isdigit(): raise Error('unexpected character %s found in header' % c) @@ -2549,7 +2444,7 @@ def read_pnm_header(infile, supported=('P5','P6')): # This is bonkers; I've never seen it; and it's a bit awkward to # code good lexers in Python (no goto). So we break on such # cases. - token = strtobytes('') + token = b'' while c.isdigit(): token += c c = getc() @@ -2568,7 +2463,7 @@ def read_pnm_header(infile, supported=('P5','P6')): if type in pbm: # synthesize a MAXVAL header.append(1) - depth = (1,3)[type == strtobytes('P6')] + depth = (1,3)[type == b'P6'] return header[0], header[1], header[2], depth, header[3] def write_pnm(file, width, height, pixels, meta): @@ -2664,7 +2559,6 @@ def _main(argv): # Parse command line arguments from optparse import OptionParser - import re version = '%prog ' + __version__ parser = OptionParser(version=version) parser.set_usage("%prog [options] [imagefile]") @@ -2706,7 +2600,7 @@ def _main(argv): else: # Encode PNM to PNG format, width, height, depth, maxval = \ - read_pnm_header(infile, ('P5','P6','P7')) + read_pnm_header(infile, (b'P5',b'P6',b'P7')) # When it comes to the variety of input formats, we do something # rather rude. Observe that L, LA, RGB, RGBA are the 4 colour # types supported by PNG and that they correspond to 1, 2, 3, 4 @@ -2715,7 +2609,7 @@ def _main(argv): # care about TUPLTYPE. greyscale = depth <= 2 pamalpha = depth in (2,4) - supported = map(lambda x: 2**x-1, range(1,17)) + supported = [2**x-1 for x in range(1,17)] try: mi = supported.index(maxval) except ValueError: