From 5f787c92e5d70d401a07e0b45c87ddf7c9a237ba Mon Sep 17 00:00:00 2001 From: "Roberto L. Machado" Date: Thu, 2 Jun 2016 09:17:59 -0300 Subject: [PATCH] [UPD] Ajustes em Graphics --- examples/convertImage2BMP.php | 4 +- examples/convertImage2BMPBW.php | 4 +- examples/convertImage2BW.php | 4 +- examples/convertImageBMP2JPG.php | 4 +- examples/tux.bmp | Bin 249998 -> 0 bytes examples/tux.jpg | Bin 40493 -> 0 bytes examples/tux.png | Bin 11913 -> 0 bytes examples/tuxBW.bmp | Bin 249998 -> 0 bytes examples/tuxBW.png | Bin 6530 -> 0 bytes images/tuxBW.png | Bin 6530 -> 3440 bytes src/Graphics/Graphics.php | 347 ++++++++++++++++--------------- 11 files changed, 187 insertions(+), 176 deletions(-) mode change 100644 => 100755 examples/convertImageBMP2JPG.php delete mode 100755 examples/tux.bmp delete mode 100644 examples/tux.jpg delete mode 100755 examples/tux.png delete mode 100755 examples/tuxBW.bmp delete mode 100755 examples/tuxBW.png diff --git a/examples/convertImage2BMP.php b/examples/convertImage2BMP.php index 8e4c966..1f13ee3 100755 --- a/examples/convertImage2BMP.php +++ b/examples/convertImage2BMP.php @@ -5,10 +5,10 @@ $graph = new Graphics(); -$imgPath = 'tux.png'; +$imgPath = '../images/tux.png'; $graph->load($imgPath); -$imgPathBW = 'tux.bmp'; +$imgPathBW = '../images/tux.bmp'; $graph->save($imgPathBW, 'BMP'); \ No newline at end of file diff --git a/examples/convertImage2BMPBW.php b/examples/convertImage2BMPBW.php index 4a37307..e444be6 100755 --- a/examples/convertImage2BMPBW.php +++ b/examples/convertImage2BMPBW.php @@ -5,10 +5,10 @@ $graph = new Graphics(); -$imgPath = 'tux.png'; +$imgPath = '../images/tux.png'; $graph->load($imgPath); $graph->convertBW(); -$imgPathBW = 'tuxBW.bmp'; +$imgPathBW = '../images/tuxBW.bmp'; $graph->save($imgPathBW, 'BMP'); \ No newline at end of file diff --git a/examples/convertImage2BW.php b/examples/convertImage2BW.php index db66277..588ca6b 100755 --- a/examples/convertImage2BW.php +++ b/examples/convertImage2BW.php @@ -5,11 +5,11 @@ $graph = new Graphics(); -$imgPath = 'tux.png'; +$imgPath = '../images/tux.png'; $graph->load($imgPath); $graph->convertBW(); -$imgPathBW = 'tuxBW.png'; +$imgPathBW = '../images/tuxBW.png'; $graph->save($imgPathBW, 'PNG'); \ No newline at end of file diff --git a/examples/convertImageBMP2JPG.php b/examples/convertImageBMP2JPG.php old mode 100644 new mode 100755 index 8d77f2d..383139a --- a/examples/convertImageBMP2JPG.php +++ b/examples/convertImageBMP2JPG.php @@ -5,10 +5,10 @@ $graph = new Graphics(); -$imgPath = 'tux.bmp'; +$imgPath = '../images/tux.bmp'; $graph->load($imgPath); -$imgPathJPG = 'tux.jpg'; +$imgPathJPG = '../images/tux.jpg'; $graph->save($imgPathJPG, 'JPG', 100); \ No newline at end of file diff --git a/examples/tux.bmp b/examples/tux.bmp deleted file mode 100755 index ff3686ea9bc8890b9f6f5e1bc18bd63a0f4e6995..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 249998 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 O+}Nd(mPcy@KKwuZ2=&|m diff --git a/examples/tuxBW.png b/examples/tuxBW.png deleted file mode 100755 index e8f8f95882a76d29976d8191768290b6cbde1207..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6530 zcmZX3c{r5a|Nqd)jAe|m?=#cbhDx@|)?j35h_YuJkB2PDE=9zQF?q^F2q6)&MY2S; z5y{wPi?NhFOc6rrclUWd-{1AUuJ0fBHTQL&bDuNk{eGX;Sq5~Cg* zYJ9cE@qimYbcQ}#;EJ#zP5)Ka{e0z z^;Ui>$>zqj|3;=P&If%3Lj5N%F76sIhAin?7#snDbE6)hBoF85yBWMBFzBs;2?(c5 z0^9Q%!nXfyW&>5h5n}odWw7QeHUI0;pI86W_MaPzRxw!Ue_N*<%Y~htoCf?ful!(r z`eYD3jAPRYKX%N!n^?QG&SEiq?$c~bjndQ8sV=4YKaK5dKWj62V@A@n5B)Ur84N~G z`_mC0t43yFQ&ZF17PYKim5Z|wYlPU`1Tk5%s`?{aLmXpy>dLhk!@yV*`>E%T5$t+ zoZuu*D!L14eDmg^=1yIN6DuNTWc{>|+zGX04|$75#i66*?uyE~I%7LKyYA^+{qQut zc3#8fjj0lO(P4|2SiNG5>dOs*0m zyD?$+&$68+))Qlj)x=A~O!~K8J+^&VBPoG$mm!hvjFNFv;3p-+_X01pO>nsIr2W;% z5sVO{P6no(ZYv>nZiY&fYG!v?h>!8!=<6Z5Dpg0B=4mr1KqclZ4Z5k=7Yh=!+*#}E zb3F0+mZlyUZ`roS&&JpEGE(uGNCVlqqt=KgJtf`j+Ap2|G$*B!x_1{2b>I{;^sy2x z)@Gkv!&ZiR3!A6@e+qy^94ZSoxx)J-Ge!XdZST^$H_qB!+1ty=$<6iF%o^OghLLtU6*( zN*DtX1WL{ZH3$qiJBzD#W^AxnE6m1l`Z}@Fg3b$}@;r0Slv-F>q2BF4^HK~;MtrD~ zs@WDR?G!#dJ|rwG?WV(y>I6&vbFe;-0oqUpRkg8w?|huz?Vl!}zdeHS@jV~BI2SStZcB(nczW<85DG-_QOxY;DugnpsxBDlX>gl}9o= zJ3C92bR#BviuK}R)zmlhlDlZjO~Uk+v6YbGu`hwV$F1Q_C<|fjQw^`2iZRNqT1|>< z`rpgBh}YC)kvKh|ND<|j%wD%!X`ImXv# znx94g+5=YeiO%brX2g5Wx(1q9G7n&9j6q)ISFbB25Y1Q1y9XiB(YeJ;(c9yksU$Xg z*}*T{>UEg2nyl81fBr^W3j_g6ecRj1d$|AQg}QW7=xJHuQfcvfM}f&VVj!_ND+W%; zX*RVAv-CALH}{@0!(noG>c;6W8a&I>D?oY%vQA&`+KpoNKH_#=J^cP1BMC>_;4>*g z{6u0Z4*<|o($YSx*|`9>B8_35leM+Aq>m3Y6_8RS(p(6*W7FInPZ80F54fp3K|+cr z*9(0FVhv<^Og#u8MRvLu2iL<^*4F&yeurvFY3b<+Yu!2}38N;sFqMtxXZqQnGX00$ zRNy!FMH*h8A>lid*D%qC+aibGhc7;emRD1@tsygCx{fd_Z^WUUj7TRVKSOy!f&&3O z|29SUXZohVj{Mn1J3DDW{U7_?Jb1N-m9H3-BB9BueEm8@p%q_3O-xMO>yK-TNoYRW z`Rmv1PrEofkvLk{c!N~Ih|h5y2d9q5;8H<4zMZI=F|fGkxprwy;pqst6mv9=ZTIUD zXJ;N;CviDRIDRHaRJzljpq4=Zl0BRo{p;+x*o#HOboM{G(*$Z-2#4o0}gk01Y;&y%fH$P9ZxOnk$OVP3lfD6ZY&IS}3>RKa&sjE|b ze0<;M+Bp?jGT=6PbTg}eOzWR_e*wKNvBxSf?~7NU@yjj+o)W+w{SmX^xCxW_RZ{D?yAsiZKZ~&AOMTrb5U(r9es|NvzOaqQIcG9YDeF_ zdxyu<+foE$>5+eW@BlsRfWl|`zj)Jb1JG7}{xS5vIM-aG`>AXTO34Uz`=;)KT|OGq zL!ot<3}xR55AK?NZ{O9GdCP=dpQu@u(iPL4ja*sn!A!SAUtC&RdezjFz2DR-1%VnT z#CII*vQ{WEx4T{i*$daWDJ$8#)kqr{oXQS&-(RnrS>D+R`!yi5c?5-mmO$#3D?A9XG#W^X z%PF2_Vv0dp8e#GeZW;WDCeym?f9&zQ>47=={0m~SXo-gK4{xrkStDZM@Vz|kf)GO! zNY|~R_xU>4gGpfd!M<3m!DGc4XO}p36k97QN&gOQHU`U{uqh%4p^`R7Pk}^9cy@1g zb{mppVN_Ct)>R~CwCl1LNH1bV0spSN!};@?BwJ zub4%o?+X~j&R@4AII=&`*1to&klb?WTWX2dFzo8B=&mSP;$^S6>wYue{E`o7pj#6N z!CIMwASp!cb)8Ci1;4Z}G*H*wUe1E4cv7zfuW(+brBWR#k4vjeS~HSWEBz=)3{mT^ zoZw|>Ij)fYr$MnEf=jtnuu$gQ}KomkCur4u%O#ge!0b*e@gzbbz*Uy+Q%)%Sm2 zC*Djr&TuvXfn-Q{vqG7g&F=5(?w2+0&_FTvueqR3h@6w-dO`D842a;)paBVk7%OVK zX+KNPqE*V)un|(SXf&v?Jgp->PQ-xyF~#ztya)=VRz5g~(;P0PIsuVLFf<9k2@y~F zX$SUENGs1IK@TPlKkU(H9LDG_r9Ytx(!zM81{9;G-1fuNL%Zfe0NHS}FCJV10iAu! z3k6AJoSDa&yls`LWX5&Va#O+?ot8&FJ-YD3cT^e(6k5gymFPYX%5soGKp>#)G8lA1MTYHbW)12NmfgwAOr}l~um}>i@gzkk zH;r?Y3}$CXUKu5mu=T~<$V?m5gTlM^BJ2P;(OJB+s-+c7%d;OUmwiD{Ke5`(fs^IW zF@6)ppo%Iv3<$^fKU%qLiUhU@WKXC}3sF3!$#wSR-y%g%6Mw~p48PBUU(uwh;< z_+>y3hwhpgq%}3^0t{SfQGunN5su_V@?)v{jm0YR zkpR629YbVT>s}E+5b_6~^yi+tTyA^er*`$kKl_Kb*L+nhdO0uGZjFqjZpdLgJMLa6 zobVgk+dC_iXp}dTYfH|54Cu0fyHv`4o<=IZdZHjn<{TF%n18Ud^C*@J zWMONAc=@CGBA^edUc8?hOI9kB;UTO>+gc+4ZE$IZH9HFuGV05CC2&Hm{8}f4#5%CX zrWUlY+S=HdOlC)O=a!C6(vhJ4AGBg?Z1;4dZE1PA!p`olmCYHGuu$xg{*O7zV!HBk z2YNM=>((i$rWjtfxEAcJhvV0D#sdD!?GP0$Of1q;8qO1ob|r8_Qw~zA+IeSo)ehej zNW6d5$FZZ7&S=PjGrG*&wX%oOPr9m>qUn}a^Kquc>o;9hUnUO-!SVQP3;Dq>I{j)T z`FFAjd=PZI0e$zdha$!RsOGgx(v!;mfHNPMV1KRt&d8!q=20_60Mgdg)jfzlCw>o* zg@ZSA3J0&^M|@Hf5>~ghnr`h{7^T#|)y+M2cPYYFlD}11Cu(tL$9A$AC5vfbo&cC{ zFEc)@(H!q8qD(d~x-5S0y!CVIt2)w`pIyoW#&&IvoNFjicc&BVNsF%T-4&XZ&pFR$)90V|GEqKhlw$6 zLuJo*b@=$OnuIF*$1=+=gTlkpeR2nF_TW%k1olOby3LT0tyM)ug{6&X;icyT8yhDy z039mG)vZTizB;>Jkl&Z5Yi9yjT_8Gd=A1o*IP{74v$Lg2tg%4h09xY$-(5fr0GxXJ z*PfT6mu!gb##9k5Y9_ko7wTkuJL>Sq=cG&1+(o9_+_5ooDeoh#WQFfl}Q17Sk!mdwwZQ@&`uY-?URpRW%noJaN6kW`Y#c-6=im^;C#L{<=?@a@yH z*NH;Gfq|$z*^M^$>b1ONOI+v6&?%9vn&KFRRI`lf(jm{MUgt;#PhDR8HL@V?9WN#N z@=a|?EZ|Ju1{_0$?Zh#Av=sAbKQN+8pnkaFV$*q4rlra3LxGmYM(vPgjh&sH`X!{L zX)$HV-=n~`6!61sP0Dty;AgMvm7p`bfu4qN?QK%yy_04F@Z!D?0^Cyyhr{}}3Zgjc(@c(U(A<16mgWh6?PiZpPmfL^bT_4G zwR2q19q>tXSv?^inC`VxAM=Kz=QcckHEkwD%lxO~h8f^8wtjKp&zw6a|1?t4#)f<( zPN+39a%QRFq>`NpvT7tiLjgak8{^nMM>|+^{6t$0YYd5uB;ZATx`wW*FP>|xRRhur zoP{)GvHcbRvuR|R=S^A!*&qO0ac~6bSZG`X#znvglBZl0wrzK&}?UjeNw`&Gi z^8eWu07iaX*DQf__%Ykyutn3$x+GaHDwF99Cb5@FH~TSQ?>>4PUfC)H3{;6UJs{~q zFBh5K-J%xAseW7(pg-vW0ea4e(r3NWo{zNg@o}6`-oWM?{KK#JGZvmL0_@G5d(BLR zq^qa5>K_}X54WtFlQ5R63KzVzqn>9G-U2#`5U&SAVjK+rH@> zF7WDGR4(Ag0UFfO)wKx=J#|88?5b)8rUWzkx}iaJQ-ROtU%pe%>Q#OHR5TdjrXhy% zjYC2fg{Iru^b2<}4ibnamn6V3ap=b+HnajK65|uiXMs2X3_CiSR(tTYLdw6A5is%g zZ#ekT+lLVD4@1G<*3QGhAt51nFE6i;ERWjSWVbQjAI(WIv^4;b!v!AC4jlqShXfqC zuP-AZ25AOIBqb$ri-hq~+V=+9M-V5u*BWm{L<~+L8mr8DcC_m`^>IKF0hhX%k}L-X zTgA?GZf|RZHaY`bqb`0=_ymJFG2sB=vKD)9E+_E#b2>@tt#uiHmjN97{cv|?7y!&u zZScijL~Y50-}yewNmqvJbL+*WUx^*)cm;j{Y_kE^=B9#^Md=p}qtH)3fBx&sekSVx zScZom4jxDX4}M8ZN=p|sKK^EP`zBxsMSk_w@+w}2gVjZOuBwXILu!;Ulnwb%`KM_UMdT*9!jyXv~g zgfmLi@zajgpOVPu0oT>$_7#h~pOkd$cl4w6_Vfi9dl2cs_QjZ*k3U++D;$U}-ot1c zE_WQ`(iBJ^a7$}Ptu~WW%{o5jaeq@v@^O=4ft{dW>s*C7iY8)UN#)`8g?&)DddJp^Oe14TB5q{hSDd+;} zRPvF#avmqzOjS*Jb&|x#wWjw}726e{0v~)61b}J5`IQRk*Lnpxgk-QfF!Q+~-t?bKOu?O7)3+w5nG>Dp_N>BszQriy0!k?9PtvfrK za5e58VQ-q?O)-02j(O@46+*Ym&FQ;~J~_#U;zuRkr@U~kP;N(GpM;^R;@A2pFRn<9 z=sy^{Mxo6jKSI9=d0q5$n~yp`VJ;AE+e>B>(^b diff --git a/images/tuxBW.png b/images/tuxBW.png index e8f8f95882a76d29976d8191768290b6cbde1207..a90b2cc8d9ed286481a6fee7cb1d797a42a961db 100644 GIT binary patch delta 3417 zcmY*cc{r3^A4U`AtuQl+-mH&@Q7B7FvU@PuwTve6YLJLRB}>yYG}S!TCQDf&(_*d2 zRx0ZVQ5s7OSsG$$c#+8N8{hT)^PNA=xz2K(bN%k$Irn{^Xuavb?-;<_fFqFk@vzLv zf&Nr()pj$Nq~Nvn+e;(O4QRg@5id^Fgx1H!WXAET+SJtVTe>E%*9;w`O0MZGZ5Ap) zP{np2^)w(nfkk`XBM7~LM0)4ic`~(OmHm_J>l`n=w^#%*c3L~Nu81Ke670w9WuLDt z*XtZ)+=uuEa*G3GSO?D_1bE911_ydM0u1LegSTE+bR;Xyl3JwbzLou21Lw!^8VLB( zX}?D7+aeI#tU&iA?pUNlL8Xp)q@kX;%nPXUdNAa#yEjrGGYu4%<3Dw97eoAPH@fua z@+UJ;yus?@eF%`kjs8<%sR>|c$V}2C<~9N4X(5$HfTdEy-Ya2mq=_#FWY0j+(=@Us zL$-Mszlou=*<9WR6xHFia?X0uH$oK+f{fZL_)Z%!n;Q~w6a?}WHQ>-uyOBWC4HS?B zxz(R9jhChV2S;>QW=I(xTf3Jb6pBFj)W*r)iopLv4gN1|(Ys$YuoDCTuI*eEY5sA& zre<|Yo;|LDMH{Jk)6fgMC0?vY(t2#=0ZcESCU;1?FDoY;t>8@ zQpPJaOf4Urm@~eYm|__#ZqR*Skn$71;yL&zO-^k*69S^fTV#9y6Y@-$G3LVSj$57aDCWK# zm6`+3afsPqqf&%YbxA~X`wweRJ^SLnVW;GhA}~5!qQO3?)shrWI`a9WJ=+Z-d`@v5 zRl%C4*+a@$VKfWYe@^LA#mYb1zv$2vPKUJhXrmbMoclKjsHAYRF+3ALt}>>Kt@F-2 z`L3E>0FCupkDS@F7ug~9v-GYw*y$bnDk98B-$fAIT_5M{#g5azLaH$KqmM4d8+fCY zVbT$lbRb|1-#*(#rC;&I< z^u_k+`-T&~>+2#{;ydH1gA{YS*v`as`20wo#y=*r5iUKWQ!U+ik9sqN66%wS z@A5`@tfEC~*LLIEH@l$#B38aE6V=`>0e7wZ8Lqq8dc=KIsJr=Mr2@q+g#xfoPMI&P zT$zX0R>GI{1oh&~C8Fd+umiK?E}^Je!##uEV#`#HYHsjr@&(v*b5}=oFDxQtpCC(H zHD;Wv^*rpPJ%T|#*ls#=lm$%JAdr=aOA~JrkTyk7%JCALVFXeoVlI`y=?iw?9_@$s z(+KXD)uf1+rno^z?)p9kFW`4=Zk#inr7G$i$u!I&WRC9lk}p);3UO)OVjp9OgX4e; zZ^E-A#$exv3O9XeKzK88>rH}mag1mGmn}C5a%FwBR56CZu&q)N@RMF4?`n9C&XUpC zCikc3fEpKO~f%4Jm=-JT}D$lZ6j9TU|vasisZSz`+~h^ z$Y10g6!j7m8DY935>IP5?-?5}lMA0MTrYa*&QJ3*LRdt>E!){#rf;VXMPJsn3cKa3 zsfg?h<;LjV1m1jCG4~)@FjmdVE`u+pjDFF8(kCjy?_h5eC9PdZ+u``^BDKC#2e8j% zi@m&i|0PM<+gStrPvn1YIeV9RgQs)|X$*pP3NPo=tC;PGEmP9b;QVVsnfhxp7M22g zyE$mepdZE&+@)9Z$_seQs-6B80-Cn7s{dnM)VP-Kl}|7ONsfmgE@+c4H<8OvMW9rF z%l&XG#8k7v`?my5W6@9XKYKJWNP78!;XJJ+f3kpm1S}?8NPj!=X7*_!^!tfifZIf{ zAqDgg2FWJ`jGu0ZEl&*+B$8gO_$VvHULHMM<)?CHyYLnJUFc?Y?(W-!Vrh+rkYm>M z`J!EVJ|H#XX)NsoievR=ug+V|SrA2Pqj<2D4XSnlfU50B|kvX4v=FPpt@xZtAjp^z>q*qog7k9QgF_Fu|wm8K1$*yUFGmX4${?hBqj8{ib=1@cYfZ#U+1)6m< zkq?g%82Wf=f6mDs_Ic7uiW;^Y-Pi}*2Kvss9l-XhNe8hy7`+uJ$Kadw^=|2VdZF5CoP(@ z4Pni)Vhmbn(F(dnK*h78pe?>-_B~RS1Jj~YnF-5R_gZmvbadZ+OLfonw9Zv=;U7z5 zJfOf9by)$kW5+?FIO~RUn_t($M}sU!D{_jNyQ*|>eD6WhxI-{Vlv{8Oea@HGnae76 zg@>AJ!yK8o9C~gKtFSF4F-6_hyD_od0@r@un*`BR~5<=j(~=G=)uy{Tv*_l6bjKeF1}yo0E5@& z*W@IE$)0*8=RG&cTe4KB9toj#I~^uchDe779%c{=#n^rVBS!MmXD@Zt|E$o0$M#W4 zm4$qXO9paC%6dVFWU0eb&S3l2Pyga_cSW^nmlP>*4I}TEN}~(u*Iznn2h;Q4o4g+Q zxR#>}#~H!4(#(sw7=MLc%5kIOCNOS4nn{bI=r^_X5DdCyr^3negEGuJmaUs&QXt)I zwaM-}Wzj>%5?n1w1waR#bWO{cJ3YKZ9h|u)mOt({-jhP(W3<2Uw)8q4RLWxqhb=@@ zeRHpr?@x7NqR9Oc&%v*vH%)-XZ{I%S?x{?5!tHIg%&dtKU9y~lglX!)&$X2T6tlX> zOD9CB;@NQh_gqugKY_(Il#w>o5rbHT+qXLvr>jE1xN4VEr7`DJT3>w#UGkVb_Rv-A z`mOjAH_Xbmhs*iIHdvM>#>Bpl1lS&BC9_rSkKR>ZOgFZlt5UYb+qAU%a(E&osaKZ| zx56hWUnY^(@%UqrFTK^v&5FD#4o5ZAq!l!cBE^>?tbzLF0lit1Y%Qt&9ZJ}#G6m?} zV94YjOpvSoF|U5B-gdo-(mRZ>)Vai}u4@BzS6vSJR`~G)4@N3gXw~JKz3>nk=;YSl zJug|(wf2?GUOjBLF=5NiP#<4<=3(;-9ym6T=f>9?3_QGt0(yK50<#0|9q*nsbYgX8 zVCu6kB>RU)bo9k-(lqQzsLr^cT7nPJ-qE-1p4Hbxy{Vcfz>H>xncHO;Sq5~Cg* zYJ9cE@qimYbcQ}#;EJ#zP5)Ka{e0z z^;Ui>$>zqj|3;=P&If%3Lj5N%F76sIhAin?7#snDbE6)hBoF85yBWMBFzBs;2?(c5 z0^9Q%!nXfyW&>5h5n}odWw7QeHUI0;pI86W_MaPzRxw!Ue_N*<%Y~htoCf?ful!(r z`eYD3jAPRYKX%N!n^?QG&SEiq?$c~bjndQ8sV=4YKaK5dKWj62V@A@n5B)Ur84N~G z`_mC0t43yFQ&ZF17PYKim5Z|wYlPU`1Tk5%s`?{aLmXpy>dLhk!@yV*`>E%T5$t+ zoZuu*D!L14eDmg^=1yIN6DuNTWc{>|+zGX04|$75#i66*?uyE~I%7LKyYA^+{qQut zc3#8fjj0lO(P4|2SiNG5>dOs*0m zyD?$+&$68+))Qlj)x=A~O!~K8J+^&VBPoG$mm!hvjFNFv;3p-+_X01pO>nsIr2W;% z5sVO{P6no(ZYv>nZiY&fYG!v?h>!8!=<6Z5Dpg0B=4mr1KqclZ4Z5k=7Yh=!+*#}E zb3F0+mZlyUZ`roS&&JpEGE(uGNCVlqqt=KgJtf`j+Ap2|G$*B!x_1{2b>I{;^sy2x z)@Gkv!&ZiR3!A6@e+qy^94ZSoxx)J-Ge!XdZST^$H_qB!+1ty=$<6iF%o^OghLLtU6*( zN*DtX1WL{ZH3$qiJBzD#W^AxnE6m1l`Z}@Fg3b$}@;r0Slv-F>q2BF4^HK~;MtrD~ zs@WDR?G!#dJ|rwG?WV(y>I6&vbFe;-0oqUpRkg8w?|huz?Vl!}zdeHS@jV~BI2SStZcB(nczW<85DG-_QOxY;DugnpsxBDlX>gl}9o= zJ3C92bR#BviuK}R)zmlhlDlZjO~Uk+v6YbGu`hwV$F1Q_C<|fjQw^`2iZRNqT1|>< z`rpgBh}YC)kvKh|ND<|j%wD%!X`ImXv# znx94g+5=YeiO%brX2g5Wx(1q9G7n&9j6q)ISFbB25Y1Q1y9XiB(YeJ;(c9yksU$Xg z*}*T{>UEg2nyl81fBr^W3j_g6ecRj1d$|AQg}QW7=xJHuQfcvfM}f&VVj!_ND+W%; zX*RVAv-CALH}{@0!(noG>c;6W8a&I>D?oY%vQA&`+KpoNKH_#=J^cP1BMC>_;4>*g z{6u0Z4*<|o($YSx*|`9>B8_35leM+Aq>m3Y6_8RS(p(6*W7FInPZ80F54fp3K|+cr z*9(0FVhv<^Og#u8MRvLu2iL<^*4F&yeurvFY3b<+Yu!2}38N;sFqMtxXZqQnGX00$ zRNy!FMH*h8A>lid*D%qC+aibGhc7;emRD1@tsygCx{fd_Z^WUUj7TRVKSOy!f&&3O z|29SUXZohVj{Mn1J3DDW{U7_?Jb1N-m9H3-BB9BueEm8@p%q_3O-xMO>yK-TNoYRW z`Rmv1PrEofkvLk{c!N~Ih|h5y2d9q5;8H<4zMZI=F|fGkxprwy;pqst6mv9=ZTIUD zXJ;N;CviDRIDRHaRJzljpq4=Zl0BRo{p;+x*o#HOboM{G(*$Z-2#4o0}gk01Y;&y%fH$P9ZxOnk$OVP3lfD6ZY&IS}3>RKa&sjE|b ze0<;M+Bp?jGT=6PbTg}eOzWR_e*wKNvBxSf?~7NU@yjj+o)W+w{SmX^xCxW_RZ{D?yAsiZKZ~&AOMTrb5U(r9es|NvzOaqQIcG9YDeF_ zdxyu<+foE$>5+eW@BlsRfWl|`zj)Jb1JG7}{xS5vIM-aG`>AXTO34Uz`=;)KT|OGq zL!ot<3}xR55AK?NZ{O9GdCP=dpQu@u(iPL4ja*sn!A!SAUtC&RdezjFz2DR-1%VnT z#CII*vQ{WEx4T{i*$daWDJ$8#)kqr{oXQS&-(RnrS>D+R`!yi5c?5-mmO$#3D?A9XG#W^X z%PF2_Vv0dp8e#GeZW;WDCeym?f9&zQ>47=={0m~SXo-gK4{xrkStDZM@Vz|kf)GO! zNY|~R_xU>4gGpfd!M<3m!DGc4XO}p36k97QN&gOQHU`U{uqh%4p^`R7Pk}^9cy@1g zb{mppVN_Ct)>R~CwCl1LNH1bV0spSN!};@?BwJ zub4%o?+X~j&R@4AII=&`*1to&klb?WTWX2dFzo8B=&mSP;$^S6>wYue{E`o7pj#6N z!CIMwASp!cb)8Ci1;4Z}G*H*wUe1E4cv7zfuW(+brBWR#k4vjeS~HSWEBz=)3{mT^ zoZw|>Ij)fYr$MnEf=jtnuu$gQ}KomkCur4u%O#ge!0b*e@gzbbz*Uy+Q%)%Sm2 zC*Djr&TuvXfn-Q{vqG7g&F=5(?w2+0&_FTvueqR3h@6w-dO`D842a;)paBVk7%OVK zX+KNPqE*V)un|(SXf&v?Jgp->PQ-xyF~#ztya)=VRz5g~(;P0PIsuVLFf<9k2@y~F zX$SUENGs1IK@TPlKkU(H9LDG_r9Ytx(!zM81{9;G-1fuNL%Zfe0NHS}FCJV10iAu! z3k6AJoSDa&yls`LWX5&Va#O+?ot8&FJ-YD3cT^e(6k5gymFPYX%5soGKp>#)G8lA1MTYHbW)12NmfgwAOr}l~um}>i@gzkk zH;r?Y3}$CXUKu5mu=T~<$V?m5gTlM^BJ2P;(OJB+s-+c7%d;OUmwiD{Ke5`(fs^IW zF@6)ppo%Iv3<$^fKU%qLiUhU@WKXC}3sF3!$#wSR-y%g%6Mw~p48PBUU(uwh;< z_+>y3hwhpgq%}3^0t{SfQGunN5su_V@?)v{jm0YR zkpR629YbVT>s}E+5b_6~^yi+tTyA^er*`$kKl_Kb*L+nhdO0uGZjFqjZpdLgJMLa6 zobVgk+dC_iXp}dTYfH|54Cu0fyHv`4o<=IZdZHjn<{TF%n18Ud^C*@J zWMONAc=@CGBA^edUc8?hOI9kB;UTO>+gc+4ZE$IZH9HFuGV05CC2&Hm{8}f4#5%CX zrWUlY+S=HdOlC)O=a!C6(vhJ4AGBg?Z1;4dZE1PA!p`olmCYHGuu$xg{*O7zV!HBk z2YNM=>((i$rWjtfxEAcJhvV0D#sdD!?GP0$Of1q;8qO1ob|r8_Qw~zA+IeSo)ehej zNW6d5$FZZ7&S=PjGrG*&wX%oOPr9m>qUn}a^Kquc>o;9hUnUO-!SVQP3;Dq>I{j)T z`FFAjd=PZI0e$zdha$!RsOGgx(v!;mfHNPMV1KRt&d8!q=20_60Mgdg)jfzlCw>o* zg@ZSA3J0&^M|@Hf5>~ghnr`h{7^T#|)y+M2cPYYFlD}11Cu(tL$9A$AC5vfbo&cC{ zFEc)@(H!q8qD(d~x-5S0y!CVIt2)w`pIyoW#&&IvoNFjicc&BVNsF%T-4&XZ&pFR$)90V|GEqKhlw$6 zLuJo*b@=$OnuIF*$1=+=gTlkpeR2nF_TW%k1olOby3LT0tyM)ug{6&X;icyT8yhDy z039mG)vZTizB;>Jkl&Z5Yi9yjT_8Gd=A1o*IP{74v$Lg2tg%4h09xY$-(5fr0GxXJ z*PfT6mu!gb##9k5Y9_ko7wTkuJL>Sq=cG&1+(o9_+_5ooDeoh#WQFfl}Q17Sk!mdwwZQ@&`uY-?URpRW%noJaN6kW`Y#c-6=im^;C#L{<=?@a@yH z*NH;Gfq|$z*^M^$>b1ONOI+v6&?%9vn&KFRRI`lf(jm{MUgt;#PhDR8HL@V?9WN#N z@=a|?EZ|Ju1{_0$?Zh#Av=sAbKQN+8pnkaFV$*q4rlra3LxGmYM(vPgjh&sH`X!{L zX)$HV-=n~`6!61sP0Dty;AgMvm7p`bfu4qN?QK%yy_04F@Z!D?0^Cyyhr{}}3Zgjc(@c(U(A<16mgWh6?PiZpPmfL^bT_4G zwR2q19q>tXSv?^inC`VxAM=Kz=QcckHEkwD%lxO~h8f^8wtjKp&zw6a|1?t4#)f<( zPN+39a%QRFq>`NpvT7tiLjgak8{^nMM>|+^{6t$0YYd5uB;ZATx`wW*FP>|xRRhur zoP{)GvHcbRvuR|R=S^A!*&qO0ac~6bSZG`X#znvglBZl0wrzK&}?UjeNw`&Gi z^8eWu07iaX*DQf__%Ykyutn3$x+GaHDwF99Cb5@FH~TSQ?>>4PUfC)H3{;6UJs{~q zFBh5K-J%xAseW7(pg-vW0ea4e(r3NWo{zNg@o}6`-oWM?{KK#JGZvmL0_@G5d(BLR zq^qa5>K_}X54WtFlQ5R63KzVzqn>9G-U2#`5U&SAVjK+rH@> zF7WDGR4(Ag0UFfO)wKx=J#|88?5b)8rUWzkx}iaJQ-ROtU%pe%>Q#OHR5TdjrXhy% zjYC2fg{Iru^b2<}4ibnamn6V3ap=b+HnajK65|uiXMs2X3_CiSR(tTYLdw6A5is%g zZ#ekT+lLVD4@1G<*3QGhAt51nFE6i;ERWjSWVbQjAI(WIv^4;b!v!AC4jlqShXfqC zuP-AZ25AOIBqb$ri-hq~+V=+9M-V5u*BWm{L<~+L8mr8DcC_m`^>IKF0hhX%k}L-X zTgA?GZf|RZHaY`bqb`0=_ymJFG2sB=vKD)9E+_E#b2>@tt#uiHmjN97{cv|?7y!&u zZScijL~Y50-}yewNmqvJbL+*WUx^*)cm;j{Y_kE^=B9#^Md=p}qtH)3fBx&sekSVx zScZom4jxDX4}M8ZN=p|sKK^EP`zBxsMSk_w@+w}2gVjZOuBwXILu!;Ulnwb%`KM_UMdT*9!jyXv~g zgfmLi@zajgpOVPu0oT>$_7#h~pOkd$cl4w6_Vfi9dl2cs_QjZ*k3U++D;$U}-ot1c zE_WQ`(iBJ^a7$}Ptu~WW%{o5jaeq@v@^O=4ft{dW>s*C7iY8)UN#)`8g?&)DddJp^Oe14TB5q{hSDd+;} zRPvF#avmqzOjS*Jb&|x#wWjw}726e{0v~)61b}J5`IQRk*Lnpxgk-QfF!Q+~-t?bKOu?O7)3+w5nG>Dp_N>BszQriy0!k?9PtvfrK za5e58VQ-q?O)-02j(O@46+*Ym&FQ;~J~_#U;zuRkr@U~kP;N(GpM;^R;@A2pFRn<9 z=sy^{Mxo6jKSI9=d0q5$n~yp`VJ;AE+e>B>(^b diff --git a/src/Graphics/Graphics.php b/src/Graphics/Graphics.php index 81f3081..c62f896 100755 --- a/src/Graphics/Graphics.php +++ b/src/Graphics/Graphics.php @@ -117,17 +117,29 @@ public function load($filename, $width = null, $height = null) /** * Converts a true color image to Black and white + * even if the image have transparency (alpha channel) */ public function convertBW() { $newimg = imagecreatetruecolor($this->imgWidth, $this->imgHeight); imagealphablending($newimg, false); imagesavealpha($newimg, true); - imagecopyresampled($newimg, $this->img, 0, 0, 0, 0, $this->imgWidth, $this->imgHeight, $this->imgWidth, $this->imgHeight); + imagecopyresampled( + $newimg, + $this->img, + 0, + 0, + 0, + 0, + $this->imgWidth, + $this->imgHeight, + $this->imgWidth, + $this->imgHeight + ); $bcg = imagecolorallocate($newimg, 255, 255, 255); imagefill($newimg, 0, 0, $bcg); imagefilter($newimg, IMG_FILTER_GRAYSCALE); - imagefilter($newimg, IMG_FILTER_CONTRAST, -255); + imagefilter($newimg, IMG_FILTER_CONTRAST, -1000); $this->img = $newimg; } @@ -143,7 +155,7 @@ public function save($filename = null, $type = 'PNG', $quality = 75) { $type = strtoupper($type); if ($type == 'BMP') { - $this->convert2BMP($filename); + $this->saveBMP($filename); return true; } $aTypes = ['PNG', 'JPG', 'JPEG', 'GIF']; @@ -154,54 +166,64 @@ public function save($filename = null, $type = 'PNG', $quality = 75) } /** - * Convert a GD image into a BMP string representation + * resizeImage + * Resize an image + * NOTE: the width is always set to the multiple of 8 more + * next, why? printers have a resolution of 8 dots per mm * - * @param string $filename - * @return string + * @param float $width + * @param float $height + * @throws InvalidArgumentException */ - public function convert2BMP($filename = null) + public function resizeImage($width = null, $height = null) { - if (! is_resource($this->img)) { - return ''; + if ($width == null && $height == null) { + throw new InvalidArgumentException("No dimensions was passed."); } - //to remove alpha color and put white instead - $img = $this->img; - $imageX = imagesx($img); - $imageY = imagesy($img); - $bmp = ''; - for ($yInd = ($imageY - 1); $yInd >= 0; $yInd--) { - $thisline = ''; - for ($xInd = 0; $xInd < $imageX; $xInd++) { - $argb = self::getPixelColor($img, $xInd, $yInd); - $thisline .= chr($argb['blue']).chr($argb['green']).chr($argb['red']); - } - while (strlen($thisline) % 4) { - $thisline .= "\x00"; - } - $bmp .= $thisline; + if ($width != null) { + $width = $this->closestMultiple($width); + $razao = $width / $this->imgWidth; + $height = (int) round($razao * $this->imgHeight); + } elseif ($width == null && $height != null) { + $razao = $height / $this->imgHeight; + $width = (int) round($razao * $this->imgWidth); + $width = $this->closestMultiple($width); } - $bmpSize = strlen($bmp) + 14 + 40; - // bitMapHeader [14 bytes] - http://msdn.microsoft.com/library/en-us/gdi/bitmaps_62uq.asp - $bitMapHeader = 'BM'; // WORD bfType; - $bitMapHeader .= self::littleEndian2String($bmpSize, 4); // DWORD bfSize; - $bitMapHeader .= self::littleEndian2String(0, 2); // WORD bfReserved1; - $bitMapHeader .= self::littleEndian2String(0, 2); // WORD bfReserved2; - $bitMapHeader .= self::littleEndian2String(54, 4); // DWORD bfOffBits; - // bitMapInfoHeader - [40 bytes] http://msdn.microsoft.com/library/en-us/gdi/bitmaps_1rw2.asp - $bitMapInfoHeader = self::littleEndian2String(40, 4); // DWORD biSize; - $bitMapInfoHeader .= self::littleEndian2String($imageX, 4); // LONG biWidth; - $bitMapInfoHeader .= self::littleEndian2String($imageY, 4); // LONG biHeight; - $bitMapInfoHeader .= self::littleEndian2String(1, 2); // WORD biPlanes; - $bitMapInfoHeader .= self::littleEndian2String(24, 2); // WORD biBitCount; - $bitMapInfoHeader .= self::littleEndian2String(0, 4); // DWORD biCompression; - $bitMapInfoHeader .= self::littleEndian2String(0, 4); // DWORD biSizeImage; - $bitMapInfoHeader .= self::littleEndian2String(2835, 4); // LONG biXPelsPerMeter; - $bitMapInfoHeader .= self::littleEndian2String(2835, 4); // LONG biYPelsPerMeter; - $bitMapInfoHeader .= self::littleEndian2String(0, 4); // DWORD biClrUsed; - $bitMapInfoHeader .= self::littleEndian2String(0, 4); // DWORD biClrImportant; - $data = $bitMapHeader.$bitMapInfoHeader.$bmp; - $this->saveImage($filename, $data); - return $data; + $tempimg = imagecreatetruecolor($width, $height); + imagecopyresampled($tempimg, $this->img, 0, 0, 0, 0, $width, $height, $this->imgWidth, $this->imgHeight); + $this->img = $tempimg; + $this->getDimImage(); + } + + /** + * Creates a GD QRCode image + * + * @param string $dataText + * @param int $width + * @param int $padding + * @param string $errCorretion LOW, MEDIUM, QUARTILE, HIGH + * @return void + */ + public function imageQRCode( + $dataText = 'NADA NADA NADA NADA NADA NADA NADA NADA NADA NADA NADA NADA', + $width = 200, + $padding = 10, + $errCorretion = 'MEDIUM' + ) { + //adjust width for a closest multiple of 8 + $width = $this->closestMultiple($width, 8); + $qrCode = new QrCode(); + $qrCode->setText($dataText) + ->setImageType('png') + ->setSize($width) + ->setPadding($padding) + ->setErrorCorrection($errCorretion) + ->setForegroundColor(array('r' => 0, 'g' => 0, 'b' => 0, 'a' => 0)) + ->setBackgroundColor(array('r' => 255, 'g' => 255, 'b' => 255, 'a' => 0)) + ->setLabel('') + ->setLabelFontSize(8); + $this->img = $qrCode->getImage(); + $this->getDimImage(); } /** @@ -211,7 +233,7 @@ public function convert2BMP($filename = null) * @param string $filename * @return boolean */ - public function loadBMP($filename) + protected function loadBMP($filename) { //open file as binary if (! $f1 = fopen($filename, "rb")) { @@ -270,133 +292,56 @@ public function loadBMP($filename) $this->img = $res; return true; } - - /** - * Get byte color form BMP - * - * @param integer $bpp bytes_per_pixel - * @param string $img bytes read of file - * @param string $vide - * @param integer $p - * @param integer $palette - * @return integer|boolean - */ - private function getBMPColor($bpp, $img, $vide, $p, $palette) - { - switch ($bpp) { - case 24: - return unpack("V", substr($img, $p, 3).$vide); - break; - case 16: - $color = unpack("v", substr($img, $p, 2)); - $blue = ($color[1] & 0x001f) << 3; - $green = ($color[1] & 0x07e0) >> 3; - $red = ($color[1] & 0xf800) >> 8; - $color[1] = $red * 65536 + $green * 256 + $blue; - return $color; - break; - case 8: - $color = unpack("n", $vide.substr($img, $p, 1)); - $color[1] = $palette[$color[1]+1]; - return $color; - break; - case 4: - $color = unpack("n", $vide.substr($img, floor($p), 1)); - if (($p*2)%2 == 0) { - $color[1] = ($color[1] >> 4) ; - } else { - $color[1] = ($color[1] & 0x0F); - } - $color[1] = $palette[$color[1]+1]; - return $color; - break; - case 1: - $color = unpack("n", $vide.substr($img, floor($p), 1)); - if (($p*8)%8 == 0) { - $color[1] = $color[1]>>7; - } elseif (($p*8)%8 == 1) { - $color[1] = ($color[1] & 0x40)>>6; - } elseif (($p*8)%8 == 2) { - $color[1] = ($color[1] & 0x20)>>5; - } elseif (($p*8)%8 == 3) { - $color[1] = ($color[1] & 0x10)>>4; - } elseif (($P*8)%8 == 4) { - $color[1] = ($color[1] & 0x8)>>3; - } elseif (($p*8)%8 == 5) { - $color[1] = ($color[1] & 0x4)>>2; - } elseif (($p*8)%8 == 6) { - $color[1] = ($color[1] & 0x2)>>1; - } elseif (($p*8)%8 == 7) { - $color[1] = ($color[1] & 0x1); - } - $color[1] = $palette[$color[1]+1]; - return $color; - break; - default: - return false; - } - } - /** - * resizeImage - * Resize an image - * NOTE: the width is always set to the multiple of 8 more - * next, why? printers have a resolution of 8 dots per mm + * Convert a GD image into a BMP string representation * - * @param float $width - * @param float $height - * @throws InvalidArgumentException + * @param string $filename + * @return string */ - public function resizeImage($width = null, $height = null) + protected function saveBMP($filename = null) { - if ($width == null && $height == null) { - throw new InvalidArgumentException("No dimensions was passed."); + if (! is_resource($this->img)) { + return ''; } - if ($width != null) { - $width = $this->closestMultiple($width); - $razao = $width / $this->imgWidth; - $height = (int) round($razao * $this->imgHeight); - } elseif ($width == null && $height != null) { - $razao = $height / $this->imgHeight; - $width = (int) round($razao * $this->imgWidth); - $width = $this->closestMultiple($width); + //to remove alpha color and put white instead + $img = $this->img; + $imageX = imagesx($img); + $imageY = imagesy($img); + $bmp = ''; + for ($yInd = ($imageY - 1); $yInd >= 0; $yInd--) { + $thisline = ''; + for ($xInd = 0; $xInd < $imageX; $xInd++) { + $argb = self::getPixelColor($img, $xInd, $yInd); + $thisline .= chr($argb['blue']).chr($argb['green']).chr($argb['red']); + } + while (strlen($thisline) % 4) { + $thisline .= "\x00"; + } + $bmp .= $thisline; } - $tempimg = imagecreatetruecolor($width, $height); - imagecopyresampled($tempimg, $this->img, 0, 0, 0, 0, $width, $height, $this->imgWidth, $this->imgHeight); - $this->img = $tempimg; - $this->getDimImage(); - } - - /** - * Creates a GD QRCode image - * - * @param string $dataText - * @param int $width - * @param int $padding - * @param string $errCorretion LOW, MEDIUM, QUARTILE, HIGH - * @return void - */ - public function imageQRCode( - $dataText = 'NADA NADA NADA NADA NADA NADA NADA NADA NADA NADA NADA NADA', - $width = 200, - $padding = 10, - $errCorretion = 'MEDIUM' - ) { - //adjust width for a closest multiple of 8 - $width = $this->closestMultiple($width, 8); - $qrCode = new QrCode(); - $qrCode->setText($dataText) - ->setImageType('png') - ->setSize($width) - ->setPadding($padding) - ->setErrorCorrection($errCorretion) - ->setForegroundColor(array('r' => 0, 'g' => 0, 'b' => 0, 'a' => 0)) - ->setBackgroundColor(array('r' => 255, 'g' => 255, 'b' => 255, 'a' => 0)) - ->setLabel('') - ->setLabelFontSize(8); - $this->img = $qrCode->getImage(); - $this->getDimImage(); + $bmpSize = strlen($bmp) + 14 + 40; + // bitMapHeader [14 bytes] - http://msdn.microsoft.com/library/en-us/gdi/bitmaps_62uq.asp + $bitMapHeader = 'BM'; // WORD bfType; + $bitMapHeader .= self::littleEndian2String($bmpSize, 4); // DWORD bfSize; + $bitMapHeader .= self::littleEndian2String(0, 2); // WORD bfReserved1; + $bitMapHeader .= self::littleEndian2String(0, 2); // WORD bfReserved2; + $bitMapHeader .= self::littleEndian2String(54, 4); // DWORD bfOffBits; + // bitMapInfoHeader - [40 bytes] http://msdn.microsoft.com/library/en-us/gdi/bitmaps_1rw2.asp + $bitMapInfoHeader = self::littleEndian2String(40, 4); // DWORD biSize; + $bitMapInfoHeader .= self::littleEndian2String($imageX, 4); // LONG biWidth; + $bitMapInfoHeader .= self::littleEndian2String($imageY, 4); // LONG biHeight; + $bitMapInfoHeader .= self::littleEndian2String(1, 2); // WORD biPlanes; + $bitMapInfoHeader .= self::littleEndian2String(24, 2); // WORD biBitCount; + $bitMapInfoHeader .= self::littleEndian2String(0, 4); // DWORD biCompression; + $bitMapInfoHeader .= self::littleEndian2String(0, 4); // DWORD biSizeImage; + $bitMapInfoHeader .= self::littleEndian2String(2835, 4); // LONG biXPelsPerMeter; + $bitMapInfoHeader .= self::littleEndian2String(2835, 4); // LONG biYPelsPerMeter; + $bitMapInfoHeader .= self::littleEndian2String(0, 4); // DWORD biClrUsed; + $bitMapInfoHeader .= self::littleEndian2String(0, 4); // DWORD biClrImportant; + $data = $bitMapHeader.$bitMapInfoHeader.$bmp; + $this->saveImage($filename, $data); + return $data; } /** @@ -493,7 +438,7 @@ protected function convertRaster() * @throws InvalidArgumentException * @throws RuntimeException */ - public function saveImage($filename = null, $data = null, $type = 'PNG', $quality = 75) + protected function saveImage($filename = null, $data = null, $type = 'PNG', $quality = 75) { if (empty($filename) || empty($data)) { return false; @@ -528,6 +473,72 @@ public function saveImage($filename = null, $data = null, $type = 'PNG', $qualit } return true; } + + /** + * Get byte color form BMP + * + * @param integer $bpp bytes_per_pixel + * @param string $img bytes read of file + * @param string $vide + * @param integer $p + * @param integer $palette + * @return integer|boolean + */ + private function getBMPColor($bpp, $img, $vide, $p, $palette) + { + switch ($bpp) { + case 24: + return unpack("V", substr($img, $p, 3).$vide); + break; + case 16: + $color = unpack("v", substr($img, $p, 2)); + $blue = ($color[1] & 0x001f) << 3; + $green = ($color[1] & 0x07e0) >> 3; + $red = ($color[1] & 0xf800) >> 8; + $color[1] = $red * 65536 + $green * 256 + $blue; + return $color; + break; + case 8: + $color = unpack("n", $vide.substr($img, $p, 1)); + $color[1] = $palette[$color[1]+1]; + return $color; + break; + case 4: + $color = unpack("n", $vide.substr($img, floor($p), 1)); + if (($p*2)%2 == 0) { + $color[1] = ($color[1] >> 4) ; + } else { + $color[1] = ($color[1] & 0x0F); + } + $color[1] = $palette[$color[1]+1]; + return $color; + break; + case 1: + $color = unpack("n", $vide.substr($img, floor($p), 1)); + if (($p*8)%8 == 0) { + $color[1] = $color[1]>>7; + } elseif (($p*8)%8 == 1) { + $color[1] = ($color[1] & 0x40)>>6; + } elseif (($p*8)%8 == 2) { + $color[1] = ($color[1] & 0x20)>>5; + } elseif (($p*8)%8 == 3) { + $color[1] = ($color[1] & 0x10)>>4; + } elseif (($P*8)%8 == 4) { + $color[1] = ($color[1] & 0x8)>>3; + } elseif (($p*8)%8 == 5) { + $color[1] = ($color[1] & 0x4)>>2; + } elseif (($p*8)%8 == 6) { + $color[1] = ($color[1] & 0x2)>>1; + } elseif (($p*8)%8 == 7) { + $color[1] = ($color[1] & 0x1); + } + $color[1] = $palette[$color[1]+1]; + return $color; + break; + default: + return false; + } + } /** * Converts Litte Endian Bytes do String