From 95353cff152b4dd0418f8f3e017c995164e55828 Mon Sep 17 00:00:00 2001 From: wiredfool Date: Tue, 19 Mar 2013 11:43:45 -0700 Subject: [PATCH 1/4] basic sanity test for webp --- Tests/test_file_webp.py | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 Tests/test_file_webp.py diff --git a/Tests/test_file_webp.py b/Tests/test_file_webp.py new file mode 100644 index 000000000..13a8ed8a6 --- /dev/null +++ b/Tests/test_file_webp.py @@ -0,0 +1,27 @@ +from tester import * + +from PIL import Image + +def test_sanity(): + + file = "Images/lena.webp" + im = Image.open(file) + + assert_equal(im.mode, "RGB") + assert_equal(im.size, (128, 128)) + assert_equal(im.format, "WEBP") + + + file = tempfile("temp.webp") + + lena("RGB").save(file) + + im = Image.open(file) + im.load() + + assert_equal(im.mode, "RGB") + assert_equal(im.size, (128, 128)) + assert_equal(im.format, "WEBP") + + + From 02931c4956e698200938d17fe503cccf731efb74 Mon Sep 17 00:00:00 2001 From: wiredfool Date: Tue, 19 Mar 2013 13:40:10 -0700 Subject: [PATCH 2/4] checking results of webp decoding --- Tests/images/lena_webp_bits.ppm | Bin 0 -> 49167 bytes Tests/test_file_webp.py | 23 +++++++++++++++++------ 2 files changed, 17 insertions(+), 6 deletions(-) create mode 100644 Tests/images/lena_webp_bits.ppm diff --git a/Tests/images/lena_webp_bits.ppm b/Tests/images/lena_webp_bits.ppm new file mode 100644 index 0000000000000000000000000000000000000000..62fd9803d706e030b3744d903ea41f4a9190a3fc GIT binary patch literal 49167 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 Date: Tue, 19 Mar 2013 13:49:01 -0700 Subject: [PATCH 3/4] added write verification test --- Tests/images/lena_webp_write.ppm | Bin 0 -> 49167 bytes Tests/test_file_webp.py | 23 ++++++++++++++--------- 2 files changed, 14 insertions(+), 9 deletions(-) create mode 100644 Tests/images/lena_webp_write.ppm diff --git a/Tests/images/lena_webp_write.ppm b/Tests/images/lena_webp_write.ppm new file mode 100644 index 0000000000000000000000000000000000000000..4fa19799920ddfdae4239838933de7427d29e819 GIT binary patch literal 49167 zcmce${_8$=Y*GGJr_ z7EvY%42UQ&APlyMB8n_hiAt*Oo>5PCk7l@!aTm?ZbkCkS`^=TreERIB(zDk4to%+! z(7*Wyg#5qw-@gU?&;R*vuWj;sxo(wRwMZ|UB^S-Yi)O)f8~?ps{IOU1b)Vu*hy0{b zbNFI#0?cL5b2H;Nhf zQ}CrnPoGnfW>u6iXMby`JSE@tl3iH|L^(`MO;RdQ?<9yjsMEuwolH4A)l-Y9t6 zBzkWa-B?BEEuw>F{vVf(f8K1mJ+OVh(X`ScZV@J1naRUy_N0b4mCu;fP-oSodzsf# z?`2WXTGTTZ4P?lKB6C_rebe4>(oh4y@5PI}RqXw1SOw=+{*{gQu3H5BKlI36w@Huc z1;Dl=H`z|g9-!yl;r|o(BfQLC!ykaJ7Sez}X}QZ2SrTBa7h3%s*=q-pffN-zR4c{MUDKVdkG$_^0iXKP*(= zZd-2;+i&-5`@NcGK|;ThI3TBvshCsw^uL3@OV4oWX)Z7R)JYX--XK`7D(Ys^0ru<*|;ynFoLc8M>ceIsv5ntg|V<^UsSm_zhgKEVGw_D6y{h#$0dbbMRbt&F- zie9(l6mVX*3$9wl+f~d-389mi&_hWZWDy>KpEklz8|I}$1ry?IoDruocV3gXsLfj{ z$b;qI%l#1m{#!+~tzwE#;04wVLoad+MAC2>sAHapHINU_j20AgTO%? zS$O+RoZTkQ%|QO`ruBBS`F5}Ehn1#vi=a~!<4|ObtMi=sw0q3)GM7(T(9xC)S*t}H zn88LdZ^>3PCgpLH`qEZ#)1mt{{C&s+ z{Gae|WF5B%K8_atdBf^up>50Sk%B&D?1(yTGCvO|>lg9&6mzz!Wy{6lc6y#9;3fBY z2=hfa@Td9xHU3`kTV-!M6~B&uY!5YQkOkO5J9pp&E>KVJ9!FSCBNPrT-%S%f*6)Qdt{^tO^S!{q`y6c?28s;uYkqS$r?2 zR?($RcGIc)U{?eGw;ht3HoULM#m4FTu6o(#duRw4CXR_(vqEMfh^RHUSjt;#zUfQ1zI z*({{r%etO=FB=9LzTYZh>=ZE%idcIF#!dlkLrYoLQC!OGB~{MdPeMoZHQ-!8gL`!w zXkNiL2IhvIxu*LG?K{r*#<~E1y?_B()ic%$S#E^l3gWaRcS=H<5Rqo(h*5dFRkFi6 z#kpB?)vUd=sxPfduQbcgEs{?`xBy}2Ux=A|SkKxsG55^uKeTILWd`(6bOcIp`S9{R};kU;h*SYg#hEU&_zhEMWphx0deGP#4wScxJhP z;np)f1puGDS-@V`GVh?K`|!sT%JSil=Sn`+ttKxii3>{7wD{NX&%d-n)PIRT;_#mZ zj@TOrHL&-MjQx7n>wXO==*PY0KOMB*?zOtBhy$GP5mD-tB6lXAI8#8KE#j^iH5Ph0 z^Z8fAuU?QI2h*O1G5jK!{*m``-YUFo69aJA{9C)yYx$kBt9Hr18vhMFd9&ar+0c=; z^pxEq`hE%Xu#mB@r|lF_@a3{93+h|e=1$8qU{up8GSVnS@-8i7SmW~Vg z8GpSu*Zvpb59A@Rf8Y-y+PCt4zg&BJ)OLGlyFF<8cA}(D5Y^93MU*?H%AM4bXG?e% zMjG4iE83H1lqW9%K451DM&E;vm&+F6wN3n{Lk7b4`rHnrx)OZzufYGFeDLxRe;~h8 zNZU40Hw~0sgbIahunOu1pqIIP(n=ZU)MhwpE81wxUo02R=vhuJb6&?<)UlU!oOK-! zvZ`gR6nM`FXvgaa9vDCDf78Ii5m=Px&PcNVJNEB2`#agIqi@y}9b5Uft^9PL;e4#=biDDc({?r9bktXUJ<_;jRF37-$7Cc=k#Ihr<;rKR=s7ET z)}0m@@CeZ3s+I=uAs!6{_|HmnrbNVXA#p}VaTjpG|3^mUkx{-|Ej&gp;1%g{gYc-H zkNOXaV6a0U|A2O2_6H^=#HWJYTH0zQam&j2=q&d-;se|5nf*tPrB^~2l#|D_oMtA0 z_T;y;=Pww3;p~7|AkPYj;s(VELKA>L&Vok+CPgw>SiuA(W9fnpL%1+yKrTzTB+%6R1GyXYA7WijUm^UWKo0gKnUB71k zCym162Hu^)GyV#EAM$t})G^=-w(A+5TJp_A;UBjxe?D%zJ@32S>l-()7|*`U`|K&{ zQ5gAY9MvzD0sMm#?vDWHWz78%c-tcWUAG#766;Yldr_G-D~(+(%KU`C_EW%J37vToT?j7^c{*r$v-k`mhzi-Ol zsFW=i@qL2)bfJhptrtxf$rq}1i?#aA_F7MK#dc4_T1V~vfO);MX1mX{-c$Q}-oEW< zJe+DinYCRkblxoWTsu2H%yo9l@ zQPbwM%qbPsQz}|47R(k(ma6ini=?yV%H@VaXPtJVqk6fe!qZ;8)>XH2XZ*+GEf+Iw z`{Ru#GtH-yw$qvRi-qp%rQXZ=?wJN%x0->1Fg(JnjJ&8}!p`Sa^f?)2K|-Drl190C z2%9HFx$7mogF4BXS$5VWJ~fN?Ya|D?(nF&dWp;dnvdnQKXS0%YWMUqF5|HyxQpY^5 zVV&3UFN}iSN(OwvMYrsBtNHeLC2q2UQ+#HVEOEj1YT$o<3$whX*l(n z*9#LLy`(-1=Dmu|`trr^2h?BpAny?DR4z@S`%dB8HlY{) za>kT6t3ENzoR(nAN$sW(`k2{16##$y+EI4)1V3j=nC+D1&MR_p3cL)jp&;UXoG|}EFA=!D^qhive zoQCJDoIWk4%nHfVe4-bBR`w_SMQ2SC6n;<5BIshTS`0_LQ^nb>Vf!d(uZDJPWc@Av zCw0t|8rE42_o9w}Qq957>@{%y{)+o5ffE|f42q$?@FEZU zhZn#LoPsDUp8V7={WqU|)2n*lsW@riITe{L8IesXArs<+ohtG_i~k@aW0;wFcLcJ2 z#$S`Wq{>6m3j2o&VE>-{+`Tf^U4lmO;XkXQ&1&eg`3zTyz*Qn#DwBhPCJF=#l`6MM zziKU+t<@|v8aBJ@PRDKQJ#_~oR@nUUxbYN%Sfv<2V0NN6Wox;p3ODmr#b-3BbQAFJVfO2BJe;^s(!ouz%q1U=T(* zUN7(vf8@Chs7f#+N}U#GOo?-VzpH=){K5RLLf(vy=`NQn7D-kr^Oq{r zbER^3oo>lguxQdPHt1)K`NzY}hr`xAhxu%(?O?q5Y_{WY(ssExcs@UHINP&7-3{5B z>UzI6`ThRF?dkIEuCsxXWas1z3n;^U@*tNuBBVNazlgu!$RygS608)m;lXDWq>WO< z;j(kHr-O4T51vh9~#*({-)HIow^l>->L}yNNTUMM?o_AO$c-<`iFYzDb z;?IkjPFViIZ2QJo>*`qhseAm*=G^tl z)Y}c`&4%;!rt^Ah=EKqa?@kuJ-=DJ=@M}rQ?L1;9huBUdbWzfKsp%LM@EBM>)>KW1+lG}uR3xPKH*O~tQGwu z_{07OIgl*0WBv;NIeE^4G8a|Q6L9Dltsd$l@ywmy5hF@3o`^=5D8{l4?ZQ+F*dr<#;v%1yBm)7x@Wx=AU> z*-^y%3;dC7`S53w@}EDh2oIhVlef!+z~6fW>i7@k$jCo53ioUIr;XC}GLih*bN-W1 z*0XTR^N3#n|3w(tFOnXX%!$qr#-{5D*$#ttwV}dOtAl|p=4aZngZik+{nX4m{A0ij ze}ljDC;kznHl#*c2+8dvFaIC}_1Ql}%t?$mRZi-p_OD#%)eY^74RU9VlKRk~{x9;0TZsoPgki7JwUUX&@ zoYwL0<+u*@3hB93duA=DOngQE&u84HF(@f>L*m&%kXXv|F!Hlk{8x$I$mc~Q#V?W+ z5G9IFFU}>|)pBQ*eyh1+rdY7kr0*idb&=vx(nnRfJtwJ)l!ylIb|w3&SqR#{i~qeP zAmG1MMx79)HDyK{Q(~>z$#!~HFCz1C@4-D6?y2alIha%U3vj%e@eqzC=_l~skUk~t5x#NI@MCS zXst%MZqhE-YE~?Ts5vaQ6t3B8-YgBhT^YMr8oFK?J6{<;SspoB96FdExL%(+_l%vo zN6%Kr&v$0d_nlX}&bNE>e>hvca*fmq$Ob}ubw*M*H5bOVqG6v@NnSTfuhDg~3NJ0v zE30y=gzMnth+aIUef3Bd9MsJwZx-_|>x37zg7X^wNhRm3nuqtRdg-YNgHlDK3NGvE zv%D_?Y0sh<0a1dmBwlC={dpuB>%8Dtad;B>@heVXq97zi5+0{dO&c|UOH14hhWTpw zO1&<<1p?>sBXTU0UURV;uH6@c(p%jI)={&J~wy;{9e zq1dcbyDOxgO4&>y*IliI3s|$24weeeCTuqgz1Iumn3xk)-!h_9{Mg9Zcl`6KGn zKyZHElW_1n?4J{uKz|;M+?E>@h02?^=Ij^8cpj;Wim^-hi`53V$pCk@X3=i7YPZ|+ z|5^MS(j!b62_Vu=O2$8eKTbXhp$=Bk5F;7L!!LNrUxYJ))08)@pn`%>^W3OXfN+ri zdMc#bru^k{*+Q|%SuC7KL|Q4CE)y&?XuLJIsrEOEedn|GtHr^S+1}HI0pNeJG78wQ z*2dp%&zyTkj$MOip0TsdnUnP?$oa<1o9+4cJBuH7UElAyMd2^?(IGG%cRt5w|0uj5 zyS%jgjDJCF1WIRFzxhHO7+}jyKm`LVbZQbG)Oh31lX})!qv+7AsUbwu9(~Dp5e$;y zgeFq_!Vu&${i0$2cNLxp`ioGef5e>%UYQvb1U!p11;ACiWU3Q6*Wpz6k+b&# zM__gA^~NN?$0_hB;$n5;a%1LnZR&Vs;&f%=ddmqFeAr+5{%F+RP7$r#uZ2gvN4$!pTnqBoUErQ^lIOWUf**S0&rA74Nne?z9!) z2tdE>#FS1_I_e2N7v)^FYqakc{8{yD&QVYO?o-jp^?<#?L0q->vt$ zTMVqgr}!BdKjTFxKP-VA8qInY$qkQV21e7Kc{_}vutb1QeI6hP3!5x2S~Zu=RVhIG z+pR_0w!&?je%q#l{ImGiBnBJPD=Y_|xBco_Rujm00zCM>AG(PXq3%b9* zT_amImoL_77Hj3}R^47l$sPFri}+V31o`l9Bc>vkL@v`uO-1Pl8gNLIzFv#UgBXG6xRTy0 z&OYg`JhWHB^4Gh{k476$$E+LORR<2#+}e&OJC3Hhj;8G>JDe_hjUUc;ch-J~{Melq z92d*um-i~T!{6(Ucjvx2^89YgS(FjpFUsEe75s$(&vL(f4F0L1GlBe(YwUPw{C6j- zzdP~#{&eMstF<35c5{Lv(jSGAUx4JpdC08-f=Dle7-8X*7a_hT3pXeR%wuBGmo1g^ zCf!1vY_laFobNOHyC+njx8=sQ6O%g0C?jNGwzDlKYD}1hTIi*P`-}WzOnGG{B(xG! zx~Lgwfx+yDnCTEN^4zR3OrZ-9+mmMG*$!U(?Q$!UMBoqmNBjf(Ur^?aa8kfOXcVHx zGOhFujLkv|C7fA3ZO*{Lh*U41aME7(ddPI?FzwnacKeOTV-|1PHP*7#Z(8p+A^tg? z?Kzt6KA!7??9bQ_eU88l=5hSQLQ5l1!5PFefdm2ekBA6zu|5CYksAd%%#CkW3ojZa zH%&qa_~*1yzE;fc;bkzNf06##XG=}i+r6DdyLE4F5X1!!f;b9J#Op^+_q$8#G9HIh z17b18Mh^(11%{GedWG~Xi1#u^7?QvVj8MkLEf_0c{7XnAE$V}=qW#Xojb_a!6?pOQ zlmRU)X{Z>6LoOuaxpUWxVBb-ef*$RFQYtQFhT?b=*<5-&S(aUA5L+eB!VijWlod*B?%_ZVs4t zhnu$so6hHY_Qu+lyNzeg-m|&B8~4bYweeHez~$=b;X>b;d-Py#2r_X5GE?aZ>E`BouIvL-kP-d-K9)_=)@F)Yq0@#=kKw zqA@+LJukI~k}<-`_1643S>wDcAO1*e5nDRt6eJO@GV<+W!)i(12se5{;O))>`Q>~H z+ER1!yag2*#YXTChE!L}_)Ep?VR;sgz%l-MCe^N4x7naQx7QwZRG;^mPX?Q|dQGPj z9qV?}@mSkdU*plJZQs$1_p`~)tJxkf(!oUA>74y|&VJz@JYOC|d*AFWe!ss~&EV%gL7hLwrvl%T?jOku2;;m6%KPn;!sJv>Lz$^{S7z;Cu6OsLa%gG;p5pv8wA~XROHT`U1!d&OIPpt zQt!3Lake-(-)TB_4xG8*9fptZ2Y(0JSk#yWNgA3vzlOhs5N%3{Zpli-2udF{eSn(gprsD8(jVIY zw1n6}iMm~Fd)=*e6%fV+aftj!*x;)q#Gg0?ebm?`jB2aN7!`y6ol@p)*U9#qG&>E5 z{6(mxPipDsT~+(7rF*UA*F(+Q?N!^|wNSz7SPM$f=*8m&ANL0v-_CX)44ILaUCeas zk6DkVZEJ(3t&ygK$xieI;G=gYIu2%gAbZZ9U1#6!;^>KcYGbq$N9OB=?z5hX9kYC| zMg8r(?GLN{XX6%h_TR0Hyj`D!;x1RFVD=B~|J~*+?Ei;@_0-Rv0D1Hl882gf#*blg z1V7TSXs&-?J%zGttoGUeL08RI3&1z{!2c`!F|Rei!RUTAd?;vqgb@$?kE@w)nguBS zeBG`1x?Ao)^=h-giEdVg@R}DD|G6adrbw0 zttH1DmD|>mHFNQPciq`=(?P#!rL|vVjO{_{@b8)5P~DE0^xEi{(*(5Bc$I4g8b*pO1X@&kTw~c`fU! zAn(VZXmMy{QA)~ET@?~8;J?*cx!X~`)%r8|z<>6$Sg>s+Pe2BK|zIY8Ok`;2+?>ZqjU9 z3J+oVEftqTO-H@82lnc{uF4NH?ZJQ+13Qau_sV_4`6 zCt|uAEn_6hr#K^1?R)6mjJItJcdZR}?v8fPSj+cETR*Hi4o1u$Jp-4EUGLT$Z`K`W zuAWPG|K;)^{K(bH2uggge}KO`WryYa?EmWxSLP!>7(9$0_~$)+C63Mj7ac=%t~e>XAye;57}!W=LDOV*Er2J|&f zjDn*YIqDCHLSg@ig~0#ITKcRa&$}B^%G;@xtyKzP|M0(CCOQ1?fz>djXD`<%Pr7Qs z|2u6J^R=?8;f9ML(@uNIepmU~K;1!i#ZgZca)i_V+P&`bgTCs^iKe~5n%%*gvq>xB z)tkAV^T~GPYlxcAuh|)~Y&k3k<2|cAw&gDK$F-T`nV!Sx4xkN}akCB|(R1qR!OMla z|C0=&zVv2&dcM0JEjIXHC<0nw#)J@2_VGu1F&Zk!{PHF2A6!Iv@k*bRwpddE=3i|p z*=niYZLi+66(HceC!fEv|87Q7H!Trm=YCqsC;U^6tLd*>eEcH=1%2D2dDkX?$Ui8) zA^Gz0&k*CDf0BLtgA}Zb7WGG`@x!1Fi%a;02UQ|qj`UOL}u4=_@TZOx!00W2TgLT_&MF-vGd!40to(uWih7`U7t z*&1#;m_fYMce2=j=60-)+xF*r@N%`{faTwb_Y|O;d^pjy*jeZ9X&5z^9?d$w-CIk2 z`q+#Ai*UMsG$Y_{yumLFnU^X)X)s^u?XA=sR?UW;*2*1QDU2U=&fNzpcxeCK^kh3N zwU>q*HnoQoJ4}yVl%*V0kTHw+pMPweXoL$i}BMpOZYpL;yNxPY1e2IZDfxlyY^3Hs1lve{68_-DhcN6iFT0IYqzS%2JHjpGda$0@+a{jRe0 z7S&p_8t*5)rsLkmLwo({fcdDu@nW?7WXQJBZrtuMZ}&Fs4mK~@s#ooe*Gr>^Q$2g* zU8tQRM!FYoDR0Sfti8wpYMg!p!JQJLAjjGvk>z`viF zPJV9qWyT!>+3Bwo**t;uL_0)~%@ARw1Z>pec#G^0222_+JcK z;OtI&Ef<5O%P+c?{rYqEa8m^I+wrVMN zHx_NRmf?)=wU=+Tlpb{%cUr5~&6OL?wYzrn;ZW;x3&1bGnC?MHe+1-bd#;y;0X3|B z3(?Uh`$rK8Ra116QA+YwlNJU5{=3a-j1sx66@&=I_->em`0AaaeLYo^aTdPuG3TwkuxL#khZK>7KZjlZ2RNw2t?m_Mu9oT zguwjw;N!)I|Eb3dKJ5S9>ck&*7e1^`9u2q68MRfUI5RJ2v_kj&#>!Y-eezcU>5qeG z7$$iU4EvWwq@o4D3J7!*D%V@e{#pEcSs3HQK6R$IfXPgm5u~kYGhzQ&3V7Eg1OGri z_JD%amn*-H*y%q00sfHooQTB&%AXf%{xGHfZj}43 zn|Nx@xw3N5LPGrwUKsTstPy#4h>F;dwQ_;Glsktt-aGqu6-zOKwN__XH`ixShySuA4EV^?d{ z`IOz$Z9*b|6ySOZNwJrCz(2mi9S*|1TzN*{Z_V7Sj$bc2zV%FgTpZnOGvSm~6JyMr zv_ZY(Vr=mJ!eZw0z|_Y9IexFGe!+QPK8NvBpM>Up=~vHSF4mW0T5sLr<@r6E0rJr1 zANt%)Oa8t5FW_I776bnIJNS3xM#BGs|NrRB|8Y_P{11$omli%ILZ?M}PASEs<)HqL z`p-s%5d07P*Q-QJxH_X;2>-iOBHOGpxGM|VSQJ-9*^pYJ{nN9_s*obF0!!`vztZdHkq0=NuJAO7=&?8Rcfr(C{Nsv4AXT;;{n z2EAP@8&ns!NlKLQH2$kBQABPbK~S0_DbJHt(Y1m&Y8g{c3eGf;mBiq*@c;2F;Y8Z`B|+k z7?80h^_tnTvL3mnDvzm*$xwTrZB)3n+Fq zzmc9{rKVZ36NY(|Q&ZWVvG``l@^P*&@5$!?oE02H4T`3QM&|hk(Ov{$q(qyTNqrhL zpw+wTYiDcp7?MGI@mKIK*s}g4n-<-@3=4BGapB!0Vr7hS2-Ezu6?N8Wt#|(CO}Fe_ zpZtBl;$y!OvFM43jd`A?G|ZpJSTo}=wSwUv-wF)&FA)DgP{A8vrVP;IyUDL!cgSyX zTgys40-=j``JPFPglkqxnUm6wYIGQQK(}{TmN%`Xq4Ve};Z0#)v|6@auU|G6_NgUP zbrXW1Mp06hdB+-LYa-YXALQ>75qQYDuIUphPafB{QT$odk^*AHxKcmWMQbA($ z!Fad5RC%>9j8NxbqGK0j>hbp7v9`VO_QR>JW5Dk0KALGinr%H_>^z<8#P=hnG6N;6 zhC`aF*1765D@Ns6SIKo>(py4`u)z*dqK_rUN)Nz4+U;w)vSfH#(g07_@j(D#Y^?5vQdBg zTl~*VtVLxy_KzBpB5(^0a3AO0guYCmkWJp2kect?jx%m zx9yI$K=5)n*?v6Temv9m+TD4*+_62}hw&Nw;CkroNak zzIJvqf&#EifesheB?RH|oRDZlp5DQd7vbWNSV7P$3!CmSmoGOO+)epA?Zx-t*rl<~L#O?aP z?MmzKXKHTx4QH*I9%k%Lxn#3Q1pEhh8Qy90V!<3nPz?O30{&W^&RwHZMh00q%wj^e zCOON6ttuyh$!_l$W+DM4c+` zVy*hHt>nyJemP`(Ki|m?f13N`NycYS5p6PGM!^2>@kf(U@G?prlQ2=NU#KheG!^Z@ z^1I6ZF8)6sfnT(L^k2qUi7r{jK?UvC@VBIfTGC=#2yqx$d|>~nn1a5?e~g`ib-X@$ zij5R?yWaU>tnAG|;rqVQNqN?)fxBBKTTsxkF6u58xC(^>LgJ)OxKybdQt^kivL*(j zp30I&B$nl}=`R!LA?f^BN;yLt|C<2Ds}$f*2}&TpjK`A`nL!Oo?a)|S6t($TbgN1U zhr2)Caz59MMvTw$0siJt)5f3~DggdijX4@?+3cx%J!jkOttcW#*;MQbTAo=b=qbqW zR0`M3W#`?-kE6Et;~n(CFLIuJk@xfk)h`sVb3WhUFqP>I3`%%HT4N72O;l_-J6 zjmpY-5e4J{dqEBtY!5Ny30sx5t*Xim_HQQKh6Sb(bv;m zH`ATiBfgnwag+#*tSqa5Q<|Mu&*2Og6|9@9z8>u{<|NY}e@=e(j1_{BwkRL?z#m5d z;^QCSuZ&E#%T)bp`DB?I`0ry>prhm==RADBoB6@mk5@KZ^cX~0ZOUIUYaGI?QBm$F zKNo4#04=$X7%|0--zg#e8va;NYD|vAcs%SMSz8}Ht(TVEOH1m-7V0Pb=cU;HB8~|& zdf0L9YWnTE?bg)<`^Pdn?hTmWXD=%mD{97^n6y!>ST0oA1*~zsu0yKGPaw!%rAvY{ zYjWk{h+KML8Z{_glt8a!>GCrs8@iE0AZEGY)(FvC&_Pr_2a494sY{I4pVK3LW?(`efn?gZc`)82`Q zwSJSUv+^PSp#9_N&WripHwy#bE)IUTF!0@CHv|>D9tB4h7Rq`NSeTX5E|VeG+iPl4 zg+x(43!pzkku4F!9si`y2s4~=!h|?}P!Q28f(vN>^IStOFBUawjGfQPsIwCCVYzZ%#&Rl!b2@c9 zhl^TP6;+V=MF{cB7}}F0rhj@-rbHY~W{2k#lBBfI^s%ZoMIuR+OwRl&DDgiYx2p;p z__D?3jwM^~WW9OY(Q&yja5~ewJJRO1*UYsRZx1w}L60W{JCc|4_M4^t4@-l;Uvhl! z8v4Q22YKVL_RCqNDe=O`i-pE{vZQ6bbwH zmVIFVfv?o@NwXE@ApiNAVoaD|NM^m&u-R6K5a=Jk|7ZKZyF&&y`FLl@F@Mreju~Oa zqELnlaBvsO`+gPp|LXzO*S#tXX<%=$DI=mWBOb$t$iI5%8Mp!w+=a12#ID{BJ3VPe zn2BZoIcbJ>$yAy&#ErY%?Ehw@+*yD{NYNyR0(de{l9Ni3l52A5=w%dU zb27fdwhloMkwtx(Ls7jmmCtw)oAde0+%NrF#p3<~)plpoc2DbO zuf4atbiS?e%<0%2>)ak`T^nrlbXFo2LgN+Vi#JoPZ=LP$7P>wx_h7c+JI~M$?x7!- zhyJ)c^xbs#a;2szFDd7L{9jDJpyF)ms~O@u zAAu5sy|>WJ+jV0d{71p!YjS5urL%=s)_6p|MAfBw6XMs?N}Z?x5H zv{mg7G;j2G4OUmWyKU#QBl{!mI|EHv&_J7hueJ2FtMbOt@NTjh1%!|D9p5Z9}0e_6$j&ZZ5`8i;IM4oFprc06c)53cJ8TbB8$a8KN+nj~02_Y`9(zpv%lUkXL z!!1Zm!ySwznY64g0;?^6W+>%Dl)I;>EwTJ$&_s}|jwRkz+;faiY)f9zj)Z=qplVeNgC znLdFlXt-&(W&!>e+g{Vclo@II05^HJLAy{Pawu^Ln{czt;3~|w3;BxZq~a_F;WIx` zRC<0YnH7>md>+Y<%7jaWZ-t))_^j|W2Uwf(BN1-CLacNyRB%`>{tyawxaWn;+uZso1uocBjz{bmcPRP$F&hq(Cx|y@c%f} zJgH_k=B0D|LeqcyOq)j7@9mYxW2!2c`7#O%T=)2cc|b&X0{=FtbfI29Ud999Fn(lS z_bTuy0*3-xxCh@=ubHpQcNuld^}0JnXji>7gOj-}qQ>%!2)6&)2(f zUC3A{V77D8F@QH!C~+65mkgR7KBrwMWrrrpQ)sDQhL)1WSx>?-ODT%ZlqC_tKWSfu z!1x=*21NUU*lcJa^|t}JUk1!nR@E`mPaUQmd&#c7YNxaDVtC+mZ18Z%e%NPo)fJt# z*Il$%ylyXh*Io6|(Rkf&yzH+-==aNm;GbLg;>oUg zgQz|ymHNn^^ejY|o_W~cUq(csFH{npDv3%1{=UfHJ7nws3cgq#mo`#dJW?WAtXBej zxLs%gu;cw+7kI&!Pyy%&Kek|0O;;-5FBXjjPy{MPizf9_qZ{QcPYF#9WBUl^A+W7 zd*O(ZB#(GP_j@#3QL<2`ZKh_|<>uj5inhY$w3k^Lvf3oAB0R4cwZk&5<66my6^TKHm{8zP z^$Sxar2_x4@^Y&GOI2bP_y;Rp_xA5Q0zLV~<7H(NSQ5Nr9)SN4f4t-Sdtcyl!Jei9 zx3$pST(W33%o?@RwVH`a^+>6FxJ2f4pb#zsm29K{9oZ2B^jKWi`N00w-wfv8@sG&M zKZrjGvA+0oL_oR=KC#d19VtZcGmRw|0RiCSde09w&0dXQqfXt-%praC`A~trkxHr~ z5;3;XDAdzpsFECIMgXDRU`_ohT%AV8EE8tQ@Pa6m@F+a{X;cMG#(b5S{>Xp1rFE!C zwr4k9j@vHB+xC0v&xdW_%=8bb*iHj?%cx!|lg<}P&)e$PYYK-%EVSpknJLRGqQ^qyIsz|Y?i(6Rev1Nelt|?`(eY! z9?fNg0F+`$e`QXO#@3RZl8li>L_TAz4A9Of&s%ebB9PwVl2zP_gQcnqi{hrEe!Jc@ zl3##-Ansj3kS|T98>kvdhNzTN9P`^SeVz=J{GuFQ#&7)*Z`-6L*^i|#fjccWg zMKX_pvw{mnal?2^33do>e6AI5TW}H2){*-O;Qwdd;*sW z*l`(`PuynRy{xwsAx%J;+J$Qeyz5A%(`7~DMS43U4T4Mx(wUdkoDtoT6NllbPx$M; z8PfmWQTPe}oTju8tN^s-#M(*dcBKws^N1WjM2qidMA@lPxR?7)YsGa-{(+HuVU-;= zsONM_X+TIpY#RAda7ms(P2gMAje5GlKriSm>x%i!tHL}PGc>J^p(H(x$olQe%+G?Y zf)c`K5m{eEV8A}_`HPwQ;@3|5PH*Fp!}i8Ga536-)^DrMOfHTI*M!2j)Zcc+5K40uL)_Eljgu7QB6V^am|qy4&InAPy@+Q#kLUQuQy&F(@C7TzlG#!T z0LNe($~b>12x)#9e}L~c7rIRP`C7wdsb;E7KT&L$EGh1yr9kekF~R2Dl)`pkiQJnrjU`?!rGG`#f#I$ z#jL`5X>HP%(Ug~INN-s|NyI1Ngx>_vUf{O0B+838Topq03mGme?$QZ2>~&Yp?u&`` zAKl|`9qqM*1QQ`q>i0w-@Q`ojrq6mi@*@LHY2h0ftH7m;C9Lfl z=~;Wp?V96ub8NO&hcm)|87z;8DoRaXsIFB;#o(?mesDMzb+f+;D9I%`ii^i9Dw+gh zFuydKfIF<10SWAY1m=qZ^#lp#+m zGLyO_ygx2Ee^{8DD^jkMNHOT*y|}oPjWhVVr|NcNPggoxeBEo zZA`o*_!ZAT1RLwXznaDzFc@5Ba}AwUn#<&dBx1u3S2}=v=+9mir)ADpl;UEpwZ?oT zvp(4WLHzG5zhD+ut5xLBROlQ9(uoqar?Fy?myHn=fZvvv*g}Z0rbk&)!`2EpxC0H> z;eH(O^3NYeiofa8UYkX@4ZA(pOa7P_#kS+Lh`5MinjqVp9I6U^QA^AmGia{{?KdMG zx9cv}vmn}|SFmbLD$U5sXT2gY!*kSG5@n{egkhjZQ*rqLEi9Mt|55hlKW*pPw&=g` zq<7!FNB8vUQdK2UAViE}6oU~4W8q1jkVj!-%f_}mV0n~nu#5-Uc#y#$MllKqh!9W+ zL?nPn0!kQ^kVGMq$fSfM%2Z0Fs#Kk~9IDgR-KYBYm9{L>KXjk7KKr{r`?H6&Qp#)7 zD}cW&mt-hq!r4Gl#7@anmK3jbMP`H6%YA{pGhNRw4kC>oQ?nP1An|Uz6|}E9wF6?> zS-tpji}6~t<Cj-d}|Sd>oIZ7rC`gV!*R*y zdont@9t<{>m&42`_<$%Nr_96Qg+wBhAn=EuC*!3S0)G%YV4qr%Q`#d}Uhp|Dcn!A) zJOCdBWcWV}W#qq_bv{+HWrNd7N|O-muug;w)9pMIvP0b?rHu|hJ{{&cSA zjJg(l_?V^N$yw zvUhlD8|zCryle{fIKjp-SlN1B9@{VTMD=0BA89F{{9O?zjUYHl5TuoYJVBOIjk#{p zpT6<%81aT$43Ixr8hN#L>gD;~AvNusO?(VeqtR=l?J zO~$*u(dWaFTdm1W>Kh&@;y;FaUron8U!DGGed_jb@r_)7(vDFD#?Y#=%mKH z9L(@wjlG%0Me*Um%nU99;17O&5QyPi&E8uz^@!p#ZKAwvloNs$|q5aVRM}(CBTmMJCisT3P?_IxPFYZ{0IIj-& znyPDc<+V*LnE+ukhrvoEFSO4NH}{8>K7Kw&S|-wvm1d?ksPx1eqxjF^|Ln9%Rw{D8 zQsK!m(TP&_k%G$qI9_`)?NU!@wcEWj5xzbVdv$Rn&MO&`RjzrJn-RmEcE^J@=d*b8 zlbG{vtL0A2z8SLL=?>p$_uuOdKJ0YgjTmqFsBeGo&bJ{i2$#+RCQ#d`vPR;Dek;Us16?JKNEqF;+5Ad`1}5mQ|zS4$`FaKF|3U z%T|XSvprv(|6kz$#q%4_2XzYp)j~kAJz(8G6L>Noe74|!vE+NT?0>c58?B=a3dlX| zst$TZoLn5Q%8wB*?1c+MSs0L67rbpyh3^?`5a^<)HuhQ1D)_ z@5N;I{&4*5O!sSW^hFx?u+ZU?Lk{Umvjq76a%t?>?Xw3919$uVdx>VSJZ%N^Nybs9 zY+Ocl5psmb(~yF?s7&NSPv*{`!sF*i1*!Sqb3@x#kdoddt6vT_gB3H`#_dJ-Fv($p z9^zpe5uHTXM#tZR4?@tza3gA@0RODF91_a2-NykCnPEVUdgc@8ePU|{m>VUs%; z)o~iBjaum|%ld*p9|W+d|G%EJzn^JB{)zbiyh{gu>`_kXAggRbM8cBSMI&~5`3oxb zRD=Hd@agG5*Iam1N0QYQ)T)W~c9tos2)TLAG3NmJTY?~q&d;Ls8p9sGK}!-1HFuqD zJ0&lpXv(Q5e)6-*87B)ECvs((W%A6tGd{~=yJLTG{N?i5$I}y0CJC%)S8ZGn(cf-W zJ?gT)9CE)N_C6c%yq=03oJOgw4b`?s%7+$x)rwH3^ZR4!Mumo%c68KYT`6XghCEeh@R5Sa7Fs6rS@OoKfo+a;;&#_4_G&v z?dwk8MORc`!Qp~L0p^7Hq!Juvc^m`^cg!;rBZ1=r}ktuKa(WRC8NmPWAy51 zb&QPC*-*S)sck5(;ii}J3y93LJi*b-MUQvLDnsAu>4h_I*OrCHjs>gAKw!INVS_1s zFQ~X5*FWj8CPgcT+y|#4FJ@wg_GlvbWU}@Ch zQ86}L*o!8`S*_}v!O>D#8x%IWMHWScn48TA)O-24+aCfZtdS3z+QStG7Wln|UL{3{R2PxKCz=$ya9uEyT3wgLPog&ZW;_^PYD)kJ$? zrnf8|Yq@`bzj%;K?7{H4n0iXiomNZdjm899a?TzfG`0riO?GZ$R2^ibQ6js>4jwC)diA*^#Z zsK4z|g5Ms+kiYr=`5|oc-R*YoMa{cDHD+Kg7^K}?x;{HwUr-ACWf{59N_aFqd~2w? zE;XC^pC^oE)P|hGsYcC}kaIm^#!AI@zjM9Ey3v(vasm8*#{Xj2vKY|LdL*l$GCt#Z zy%K)28a!BSd66{Vin->vC36JY$BGM3o@Jqso=x_{?A7m zU!AfguYhS6>JQ2M-z7xy?=8zcZ&me)7-LH5W+b-cj2a4<&0Ot}tFy}#6Bcl-EEBBT z)Y)Zd3)I;aC2Uy{y*8b|OwC6zjeRnwk;DQGsiv@I(&Y-*3#L78JUm4wb7+71?wrd# zZ83ekdg1-mi;Uwb+|)E##)%Gg6<8CutsKOkI{`WT{|o({4eC(`V}XOQ&{umt61d;( zx)m|q@~ZC#w0C@9q!(_6luu@&KkY8Q0Xy+%>t2`hUfg&;YPu6NZ8-IQV!0wE9UJS` zifZ`3;8@D7q0TF9p$0U3kLM!omuF@#xXjC5<5s(Ex6i)WXI<|>pErsBp`pV6o5d|l zLGyy&fK>Bbp#I);)4>J*>s9Z|HSep-!Gp`8SL@NY*AnkHd){9gcz`a

I-?lsT1yD(j=UxutkWUs+|YuA%<# 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 QywDa{|MtbjO-V@s0GnZb1ONa4 literal 0 HcmV?d00001 diff --git a/Tests/test_file_webp.py b/Tests/test_file_webp.py index 611e91d61..460b22d9c 100644 --- a/Tests/test_file_webp.py +++ b/Tests/test_file_webp.py @@ -3,7 +3,8 @@ from tester import * from PIL import Image def test_read(): - + """ Can we write a webp without error. Does it have the bits we expect?""" + file = "Images/lena.webp" im = Image.open(file) @@ -21,18 +22,22 @@ def test_read(): def test_write(): + """ Can we write a webp without error. Does it have the bits we expect?""" + file = tempfile("temp.webp") lena("RGB").save(file) - reloaded= Image.open(file) - reloaded.load() - - assert_equal(reloaded.mode, "RGB") - assert_equal(reloaded.size, (128, 128)) - assert_equal(reloaded.format, "WEBP") - assert_no_exception(lambda: reloaded.load()) - assert_no_exception(lambda: reloaded.getdata()) + im= Image.open(file) + im.load() + assert_equal(im.mode, "RGB") + assert_equal(im.size, (128, 128)) + assert_equal(im.format, "WEBP") + assert_no_exception(lambda: im.load()) + assert_no_exception(lambda: im.getdata()) + # generated with: dwebp -ppm temp.webp -o lena_webp_write.ppm + target = Image.open('Tests/images/lena_webp_write.ppm') + assert_image_equal(im, target) From 754eb19d9d971d43a7fe36e4f5c21b6986e064ed Mon Sep 17 00:00:00 2001 From: wiredfool Date: Tue, 19 Mar 2013 13:53:37 -0700 Subject: [PATCH 4/4] Fixing deprecation warning on py26 --- PIL/WebPImagePlugin.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PIL/WebPImagePlugin.py b/PIL/WebPImagePlugin.py index 628ac7ff6..9321c05f3 100644 --- a/PIL/WebPImagePlugin.py +++ b/PIL/WebPImagePlugin.py @@ -23,7 +23,7 @@ def _save(im, fp, filename): raise IOError("cannot write mode %s as WEBP" % im.mode) quality = im.encoderinfo.get("quality", 80) - data = _webp.WebPEncodeRGB(im.tostring(), im.size[0], im.size[1], im.size[0] * 3, float(quality)) + data = _webp.WebPEncodeRGB(im.tobytes(), im.size[0], im.size[1], im.size[0] * 3, float(quality)) fp.write(data) Image.register_open("WEBP", WebPImageFile, _accept)