From 9143472e869dcf8a90c3c837f25e4de8d8acf822 Mon Sep 17 00:00:00 2001 From: Junior Date: Mon, 27 Apr 2026 18:57:15 -0400 Subject: [PATCH] Update to create dynamic images for use on the WaveShare ePaper --- .gitignore | 4 +++ bmp/README.md | 4 +++ bmp/flower.bmp | Bin 0 -> 48146 bytes bmp/flower2.bmp | Bin 0 -> 48062 bytes imagebmp.php | 99 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ render/README.md | 3 ++ 6 files changed, 110 insertions(+) create mode 100644 bmp/README.md create mode 100755 bmp/flower.bmp create mode 100755 bmp/flower2.bmp create mode 100644 imagebmp.php create mode 100644 render/README.md diff --git a/.gitignore b/.gitignore index 9234953..e6781ed 100644 --- a/.gitignore +++ b/.gitignore @@ -29,3 +29,7 @@ compressed # Composer "vendor" libraries vendor/ + +# Dynamically created images +render/image.bmp +render/image_1.bmp diff --git a/bmp/README.md b/bmp/README.md new file mode 100644 index 0000000..53b3e03 --- /dev/null +++ b/bmp/README.md @@ -0,0 +1,4 @@ +# Test files in the bitmap format + +* Black and white lillys: [flower.bmp](flower.bmp) +* Black and white lillys rotated 90 degrees: [flower2.bmp](flower2.bmp) diff --git a/bmp/flower.bmp b/bmp/flower.bmp new file mode 100755 index 0000000000000000000000000000000000000000..01317772623e4ae15bfba6c733cc9a9b937a86f4 GIT binary patch literal 48146 zcmb5X4U{CuRVG@kHg3SS+F(GoWhrgg_q@Ow`3HL}k7kme2YMV<=<(Qt0oiKv{3DDQ zmAr#hGpebI5_&M^V7m|NUF08W%B&A779ov|v09^2SCn?J+gQ?+y*{F?sp*ayx23`w zb!WFq(^=J78TWnnMrKx4&v@b8naYf~aU;ICH*Wl7cm%)KP8SN@ zsX}22|CnlxLg5uJalcCt=U<^f>3@m+!nObRK?(f-IJj~qGZ3NNLSfdb;;|s;S})kz zeA|wtut_Qy(L7OYYHdiH>hU9oW}+K@tf%#mXbahB-m2PUVScX~nggBALdu^tD$;s8 z{5s3cawejY9Ns43+#x1XWFw**{2Uj-F6SMSU{p+Jp_TAvDTgtWpM?2{vtx%jeK6>!Bz*-%9w?WXbAtVU6P{25L;t`;38Fr=+1qJhB0i=chb(9wcQY zry0SBBhyOxfsPHGqZ-Gj^LYg$$7n-2YL5(2-OsTR9HnI?=dc>aih`({@?k78=K_hQ z82$h)W3xU{r(n*$iXG*x;Stbr@4Fj~RJgZvG5| ztRmX<@tgTasPi~tq=^PNfz&Qr6)wP-HnzA61Nqh{GRANT8Et6^F`yG;SgBMPM)qIihFM%=@}Pgu#xrgl%xd#d63Z5!v~7gGKd3Oagn z!$tFXzYI@haz}3PK7e9CKCdKUe5j>`x$_89OkIJ5Qc*QGcAzexF8_^P~{z zFvd=v%i&s9m;``v;5M>$Cu7eN-Es0;E{ZUdp%x8h^csi9J;dh}?mE)e`3lss!X&Uq z(SZ`F9L7u#*G{&a)G?HR2C(Ric3MmEku%mvk%u&M2M#>eAP%zPUl;1(Fro~4IvCZi ztx41~oY9djAJ1ceY4BT)!9>ZE)XEBzz#gS4C5py zk$cMowbHWO85l7zR9s8>=ycVOA1n**lqz;&*Ji-sEt?LTG@0%XAnajbEO+uI%*at0)db9otsQDJYqr5ETqd z27OA63cE3Ep;e$cx>{pUw7zTe1gM*pB>`Y8h9z2jpq25x6vLM+!;#MpTA0>O57*BJ zoVH}=Mm(m?Z?Xf73LbtO?`CC5Aj25*XHyIXanQ);BPJ8g=V*bC3E9pFZXLEAZpz(_ zQ6^$Nw7w97YgAA36;Mgdk)h(Fkfp(W7-osu2}4e3uyI+UN161O!ct6OHYgSf$+(Fc zrp;*!Z|o|ixvY_4wveTd1w4L5IMQaqBs#epLyvk)41-EmnQg6jffWwn#TNF-8>8H^1xy*ntbvz=V)xI$|$`ojbx z-<1Z_t)ztHG)MGg7_O{F7h?FXAU0lEN5PoW#cZbexGjXFm>2X8B{jYD(cY zn#4$bKP|CB=1B$j4lck*Osu%bk*o(tQ_2wSVMan#u^N@rcydk)PtFSMfgi13fFVup zGFd+!w%K4B@w(&55$ywt59L@0?w-$!5ygtv7Z2?MPZzszoUZk^&dysJ5*w=?k--Vd zDN=J-XOnrmFANzw5!#KRz$-`gA{ZW0Ks_3un9|36Zi!=H)X5oWun!oX1?SXW9CGxp z$51X;G88o>S_jYImy)`I@izVi3~K@^H#UNByl6;_mXzaM#=4UM6AhEnKzZ=UDBOjy z+pjFf8^PGEVCuS7Nr`T1G6?f8C15DB^p-T9oOd-Xo1(0thuM`NBO>RyQ>H%DzU#_2 z%uGo66$S3UfB`jt5d?NOhM$&mC$(lRx;ZO43#M_`WYotxTlw!kNVM`=9{I5hP&j~g zcLS=zpo|gk(!&>V9G2)sGcEFIbCw2dK;x{}f(3@kdzb3=k+nL_gAK34aNKS7?}agy z_!DRPk(o9ruKnPL5Hrkj6w};|%JySio2D#2@5YGW{L$itdSuOk+2`e#`Z4vv`DQpb zfkD>HDLZ9n(LHmt8-v0y(u=`{9WSuNXx=!_rrPlP)bg?J3F>1E1Bne@TWwa+8r)JT zU4XGrI;Z0cF;aP)@4#=KxGDNjnx1k=mQU8!6%DQ_?8g=4n3B0VYhcXe=QIV@PA-Ib z(A6$i9~gEPYa9!0J|x$HNI>i0FnZ2Yo8SM&!fT_o08N(A1%5>&7&{kYBsr?H)3kKu z3o{tEhEyTj<~H>u@uWRlSB10PmtP9+W*r?pl4;-q;9d+PXI|^CQG5Rj9wfPCt-&E7 zT)x#+JLta3Z>KCi@3s|nq9BH?cIn}d^I#=Cut#t`rs-SEHRB|XDe^CQ*`!}xV5?5! z{&;m`cYF8~1p(!HX4G;cV&Ei<8jb$sT03qGuyac_F&3Kk{*~1Y+STTsD}j%F{Nl5k zgXn6@Dk+@fpg@KFkN#rnAC7k+1}z%9VRm5@oiraev8A!~C`vOU>tj3VIn)jP(HwOm zYU$)lf8NaV5RYL~yaC4viq_+p?8eIWN-fWS&lm%t;aT`HZ;p60@KYlt62AA+SH7ox z60vHUrbNQ_S8#JTc7_jyE4I8Y`$^=FxFWs4* z@n9?P+E~E!vNRWnkL=l;T*TETiYgRhGRqqQ0VALC%B-AFK<-w|2!RnyETGW@Q8+4X zMk5hmA?`6&+LG7$B&aaX}X>Fh=PDjAYDX3^X&@w@Bu- znJ?hHCgJR0>Fn1!M#XG!N4vWqu5naUQY(65vt|ZtM}aJFM>i4HQMg9u5j`7T(^8-O z^iXN5G)pjbcelB(=w_vij-<^!*z%Qym$iS+N%I`yAvkIahK>FKkqkp%5!LnKy2&lI zTe~qT=fYw+Gz(OzAxTAd7ox6OZD|w+vJ@+vo;EnZaKUR1V*(=ny2={VVqAwE?}|U zvpE(B=MlAJJvuX? z14nWgeixPFZ1!-M3lJ*dh)WdF!*1ER1j8lr5yO3RViRlkELbR%s1YtUsklz)@)%v2 zZ1kK9z>Yjh1@XCyXd|U9jLIZKX-osL4t=ipLmaz|!U37Hl1c zL9>#GR6ioBrfo8Acohrxe7|ej_v~y2~7vGhi^HvfwSQV?dWeSGsZC5rdgzNJ&E>U z{*^isOq!@&Ai6m>AntanSu|0rpl%6oZyqC)L zMZ4F4&%cS`8;w5$j&2{Cqt5BS@kz6QBkV-7sUOAfAhne3VI^(smBA{#iT&#=%)^v4 zP7tW7Z_qdKyI^2vjC%XfOBQxc|FzHQDUG}%Y-UijUGT`Z57WpD_Ncl&cxMmmQm|kG z8sG;CdaCL{Kj+E2CMX{QrgzPq3p=0wONDSo1HY=W2mz;)L-YC?Xo=U&UOZJcO(Y4DZ0%C(gg) z(K?O%EQ0>9sO#&9qu%DMBn;3>DMcajg6pg`Ip{hW+%aixnuq7*3Lwp9;*p2& zo%pGvG^k#Ef1Pa)+4xZ(0YXWN&uAuyXxW?l-WZTMcI&Gj{uma;BZM6-(`Ysc&cKC7 z<)8FWTX5RL|Ga?H7VoSJr5F%%G|}W}aV`{1*xvtx4=bnzqN1Xrm~i)1fe2_VL%_H1>7*Hw zv&BjaITTz8%c&23a$_H&^T&>ydG#zOv~w7yQ&dXHw!;M&ZO)|yqkB(BAqKmqw4L~7 zpBrR!^XRz>&h`DnuV2naJWE|4Cr6A?Rp?M?+KCp&rD_Zjl*&qO{y;}b7emYO8!b+>*=H;(vc7|a%TMJxqou!>=VUv_bnBdz`ZbdUt`}u%GBGqgW5F@Ke7f$ZF_Z)+N-*jivGd_cJ|i^s4ort00*a&3c621r9EJX^2|bdbLIiQx zn(@;hX@pGGZArslK&$gl!zVcS_fzj+MuvfM$=njqc2&6lYm7fpB9tDQSnQ$2lPRTH z$ABXA-0R98mVk3U)ZOAgG*_ZicR~*?U`(~Qe@CS;t{PPZ!xp%EgX)g~BgEd(;B|+O z2!}C1a1In67*YxWeGv>uEU_7Dg}1-&2sTr@yk*ZA)gzcp*_;B124IXHLFRRp{a_~z z!Op?qz}Smn%y1$ZVDlXZ8vUD_+^8ZJs1?g4wgQ`)rx8^eAu~B7dSIor zS>QA;jVhQR;`t2q5PMT)?u%R)Dt`8ZRb6Mn1cOi5wZ;61z~Zi9*9R}9QGqtg&wELf z%@cwP|Dy!gbK-o&WJGYR<4=;tb5Luxk-(x$8Ej&w^vZsQqXX!}=q@oeE$; z5y2SjoO&-3Rgdf+{Ysz^j2(tXAf$IU$?eq{UUuckM^(7pozC{kaI58`{Rum&OTcIg z#*|x`cXwJnXs0kN{U?W!=rP6+wRT~+Za$AP+0avTCft1K4A*+gdLAiUYI1$1oF3l> z#tOthe|Li}N+7Y7fxE>`RxIFk%Y+`YBA6bAv_ke}Ms?)-jd zVL>DW1E?6xA{#n=sXT$CxuY7jhkj1 zp~W+KTd4uJdYuzM-Ra0|Vje`WRuxX_h1_miqxV(1b!Nw-ofKpEFJsVaW^pMrQk;_p zM`rqFtxfQ(ns<~r0X^?(#2BG{Uwly0d5Yt|J>BW>#g24NbUguzZVNSUaDfsFyS79- zk7=Yf`m4Z@+?x5AbjBD&e-KBCiyID3ceoWmpOGVnBVZ)9GI@;2*~8FAzi!%+%Nf=X z-{SzW9-2Nj*pWm6M$v`%Iuo)6^FVl8Xd+Q#LXTp1i8G0B6W&UXQ@eyUXOWbGFLM> zIupR7JUAD2Wv=Me-}z<;C4>qlvyI1{j06L~w6$|RkK!P7I>0azK@Y6%9M#4kDTYgE z&EC`djCnW_!zqWsmbOt}3d63bTYmMu0V#>81)W~k_#xPw-gO<-8gw8pmboS+=HNS|#if4Ueaxm{8s%tj6S5ifl}+b0{h zNr32!I2#EYV2mO$;KX8dMpEbbINTzCsW*A{*f5yBLmR`R5PQl7vqqVvMHBannIsFmTzuiWb1sH~k^4ofL{S(nf^4uw_z; z**32S;yyF^v=nSoqx09VvU|B%VG@I1I{DACOrO4krB0tQZmnzPNSm86hFi8@fH9CN zVx!8NKWne<{Ph*~m6&OTsdiz6v<{mupaMVfhwl29QHT^D48>Ho9Ae->Vq=^fOO7$= zJ}~~~iq#u)+*A+G@eEE1&HUpp7!C><9HFr_kpmNE4nqk;4hD7j)``wfJwi9-xalI_ zcY=6m8-XbJuVEEuD21QVIDxQBf+51iR9ZLILrXFavM`!H(RuR&!CO)u&fP?3A7NA$ zmp9g6t^L{XW-u5JrSgdbjR5y#B#ebil8-Skucc&Ybp46W&o3;(0YR!I1@97a7^i1mnGx7|}NBZ^Nk z`aztH^m&Y+C88Jx&ypFcPd)at%l=oA?3|K7NN3fGG*~(a!#8a&Bz=%AC~8D_mWiF7 z$?CLUA-|$k$8|@>FltGSc^QVY0;g0_)IlseLC*SMYL4{-4HbpbWin@1$wOt_=2&&p zs~&r6Cq7$GB-v&O%}SZlx~dHf+eu_BE)-la>Icm=QHkSeM%mJ76{hRpdH6-EzukUo z`}igrH=!|xFt`L;F~Gnb01)E9Kuar*MM3kV^D#1$7}%Yvi!}C(M(=80eSii<&LNaF zo%DP5LT!}^?7`r>oQ{zN9fGd~nSg=ynnO`zJ$xidIT(X_)Em6!iC5vN(ASe_fX7HmVnQ zw$i;BWP~1$&IPjJtbm+f#Q90GoMOWmK{WC*?ifR}K>|t8#hoGD=Gp+DxMF7Z3Y`mZ zfe%dnxwnzTU>@RQ(hKi;;&<*-avRHWTd7%R69DwLPzR#{l|_IRYo^%ef-}j6GeBx- z&cp;F4vp0YFpzCJgUw?Y=3)UA`a!&74vP#j`M_{=4%-VA7d(G)4AQH#dN(j0lt%=e zY*w2~lW_!v(tcpf9o8&?@xhk>!X^s3g=;8rvMeX`P)G$SsCS0$zWa&anxm*DarT-_ z;VYe;DaG&(Y0idjrClJwfSj~Wx@JNFc=1I<&gv9URp>fM$zbWc8JMfPheErEaj#P^eghmqQVNnHv0dqt77|m1_tW#c6UF@cFaP zZQS>>m+Ly7pyC;BJVO-<9_pRcS1Y<<^%)F?EP_pR1E&{?cqZ^Th$SOqyf^CNIDz4{ zo_pZFpY`lKo{<Cvr_NXWB_y_ZQazU>T!DE49U7_%(0T^5X670;vTD2@g+)(6Jl z{D^1U>{4}zwo(MHp3>W#y-Jb7;^Nt40s+T}eg=B79)c0xC>Tc+w`hvNqE@v=jL~UF z&iC^e`yj#Iia9D$&1jWKA;uH|LrbXKMTugWXj?Fp;v%LK4`i7Uojr5!-~7KX3vP-= z=q(@!q~s$i^~FU7M&Q+$Dl7p4#-a;}{6Vfu{Kx__e*Ye6(wrVJ(AhJ+1K)X>?!}3L zYbk=bi;|LJ9PyA9ZemLmC5|y_aK93>?U@IW_1~5uns!Sky+&u_-Y;!lxA4Ug8klJe z;nurgMMGF-5SbDhhDiyA;-H1Rj~g(6wYPqrF)$xm_pou@4M%-ZQfFd<@^ z*B$2RhEZB6i3SBID+Vf`2l7mvklScK64VX_xZ`ghg>XDb$-|J ziHP-J5vJqxu-wye3vpaD0jnk$3rGcqS7$Lt=DxpN`;WK&`UX6=T}NYH3_}B>m%~7L z^C^ZW#UN+m_5YJGP|ukqX1Ok0|LH$oyY)T4Ef|LAjWXJBg+PiO%~6C=ko8ES)Q%Hd zIgVz&$M=L~o&mapXEd#;$OPs)0 zEhEMH8vAn2GSyei?~3y>Mw_GGYCrnWn_oYR$iSyNO&&w-!f31j1Dc^PZ8;27i-y8D z>8h4spp#vW4TjWbzG=Stg&)4kV~m;C&KU4(Tp=c4h-E^(Ocr_oBc-9kU{iwdj&6z( z-ojb9gK&bQaQVrvec^|FZ8mW0^R>cj34p^m?xdFO_R0!21zils*kNSx)ElSxF54~) zW7|)D?eBkhzsAOVx+jy3SjD88fihHDSqT~@kQ*vo$l@2ce8UG)XxgM=Q|D!QgieT- zN~vn%`~KpRJ=k-ROG1cqFLmTcG?&Vi3}f(vsY0WDU*xkUTj%DnLCs~E!p$*G$ag|( z{QDZ${=#Ln4u3hysi2mVFYJxT69x`@4EDoJm-q6SHhsbHY2>j#W{o&?UTcoJmC4A5 zRZ$23+^4Voxyw}VA{duPsAxh9g0a0PRm2kv1u%B33ovShAAkX&Auxtko%?jJ@CwCq z-ATpLsAQst7d17JvnUQ=2oiehdBl)3j}>C`@=J#h8hHRkKh`#itff*#yJX zE&=Nio~=Yp7I7a>!U(d1B&N-(epp_Kh(r5MY8UBOu)3O4=q!@#uImaI)}mh(Moj83 z^q^>^A;kh?2rcf!94qO3NcBLUi8#&}g;)9!Bym5j9SFwtds2+Sew5ENonag*=P|6p zq->Au;klVf;a8I!SdJtZ1FIXoLLHmsbZ8G29rS-fkLwpu0Rw5W>1Vg5qdAU4dtfNs z$S}~uQ7?!pI`wu%V+`katgdcQ&u}9TeC(=(zl9s^=$;7%{SQ|s=_HG2hw>%v*pDo5s#!%;v8;UiAK`BO|z!*g#cB@(>H$O=7ZYOZ6ZfCTzhd zC{umJM0+T_aaxhN{vsIDA(s+kWZ+YZ5uqER{f6X&3w|4iTGAeq820xHUiBIil@g31 z+DRxL>v4%ZvBVgLlQKQNz!*Fo2pJqx47=!fxGY1rva9cY|jk4o5&+qwwcujRez!GgV*=0KIC`^x_LxdalXHfFy0dQ?-nL;3JO*IS1UfKZptwXDr3rPD41$4Hk6Hx} z8Ep{BQVQEwt%BcuCBIt*n&)FWJx`@&B*i1CzGm*`0sqhC(lzmutuY2BJ7B;ECNVx{ z_tWMqC!us-j;S6g#(V^}VF`cD>>p!TkHxb-%h@C@7~G#zJ?04y!Olt=IY$}m;U;6O zWP$*zWXPxq4U;{g8qwHH?ciVV_PMSt}+a5G+OXX1D%`=zK9=ur{89|PFKQ^p2-u_RoIKW>G4Pp9?qAMP-NnP^H7}-K{YUTFoPzF3 zvTzr2l*EC7R?u28T7wz~Y~xu8W52=%KDU&spF;KNUhU&WN@s$9377q29%`0ii|It6W299u+J0~c^@W&V<6Z=St z)ltFdJB%f;dSiJMKY_8nC>UyUf7Di&-K8OZRv`;$jKLb9J{G_;E{IgPMT6-`^c4_2?lBeRfM`ujJIM?C@?}YBSLdxLBSp=|`3f#!BUT>N zO6AitE5-?{Jm4X{9fu#k{qm1v*_)~{&f{}kxqSTatx^ncCGw*xHT8K-6ckNQ5vZ1y zot_y(QeXjO{ke|`#-(_d{6Y*55+LB?4q20fecYu6#=?2T7Gqjd+~#S~=^3vRvzj^hq+dv ztqBXcm5?!BFz~MAalMORB)6}vMkT^{X}$p$dspu2;360bSmK2^o9%6E&yP$II?3l% z$6Yp6WD1^{R1X+STSsRjT3!DSYqA9()wYLHS)ReZN9}NB#7?zqDhTJO2@*pq;)qL~}cuE69TyUjV);F&I z<^XP((&`{mjYq+q{Jm-xKg-!jTZsqwj(}&fYQ-ecQ*;Z zr>GJcK7mXi7)7Evtzo{4V$hP}6cXot_z$n_>l+VLZ}FHVS#oU%3{=EX$6;VC#~4jo zru7H0cK{meo$BF(D`h={Hn-L1_6vpAX` zh=BpoUc*WF-UN-_^;KZ39=KUnlY@)nIc9&KZfn>*(NhOD>Ct)}?ZwP|qqLn}yweZRc% z?IVI=-~cJ*FjUIJSb}Ef@0-;5uz)`=vtRWuFjPZAq=Dog-)d-R;5h0|)S7 za>INWexgfx%!Jw~oQ=hVn{MlkIb7JBHfo|i0#av;*{4L(P|yEmKNvoAnk6Gs3DjgKthRY8&3}F~ z#Zc@%1Ao%Q7~Glc+x_$sHje>6Xrc0Bf_N{k6)r3KoC_AF!9mi0|M%taG3aqznu0Ap z;f@Ig`94WD zvk~fK&YNh&6ocFDydSuHRpdY3xFTSTF!$88!ywf~uJ#f^ibsyeOPx>k7T@-ru%oth zVFp)Slf4|{4GUsW7$_R~?)o9B8Z5V>D`*>w*)TUTmmmoei~xTN0%3d#ek=Uu7sJK3 zJuMhDd=PJ>CfzDoa9N6c8Yy=xJgS;JMlCZI%2fCT?_up3feCY4_;<^T`=2g#N+tS- zB~(_y^K#_W;O?Xe_ktxCRdH^ThwGyVw*XtI_@$DH3of=*MuDNAMEmvzx3%e@`HGuO zC)&eLWEET2*AfeH!9x$?Rc&AtLs-VqlrO2c9X)}e6rFlnSIW;~LWsEgL$&_I^pWJl zJ_!bsQ&0yKC>^aX7+~BVsbDe1P?CrPFcS3)YWQqA*DRM#qejM4poq48x2&!yvl*vEZH?RO0{v<8j<?;Rz87?>Gt~?^ErHQ;dY~v8czWKP_%p`%%mHNU-{QyoutCdZ z;-l|MMPta{$#JFl^&Ezww>xo_V$e#0!D?V=)TU7{)^AYtVhp<}R1fXmb(#3+vz#N< zZSlwrQXSGn71pB@ncxv8E=h8T#~9WFvW^ylraC|OpjpM;5JT|D+&q{yN2EwU6BK@W zUJ5Y^J4}q>ceD=A2nPCZLXmE9Z)R%2i6cwlRoHC#(i0EDU7!l@*XMdV+(VpApu?c` z{hSePP>rc`;Nt`gXyp9RLvAJ&s75Va&D6LH4{76;VB^5T6L)RIl@XN&9WckvJ9fby zDSYEbdOf~NX z(?ChyW#|!A<_Q>vEEicYlE8;p-WAHCXdya*N1RGK?Z@zp~&j9pb$3hN|m6uzZ0HoK&N`bhR_T$=5k`DwKq}i`a4BJV-Nwj6)p6rbnuie-rAbgS%C-`!N@pq|86?hUkrB6uVA|nZ{0e=g$`q= zOb&X(e@5s}-1Sv;Bd|@zhyobLqSh0HtPoQPFX~+rt({-QRTK|YL*X(|O9m|^@#HWf z+~H>t{U@c?_h zn|pj_HaD;j4vYh#RAJhfj~zAO5y zkMVkpL8lla&BN!>>@lUn*a8D@LQ}k8d(pyyg)%Mjnw|ytz$E>AT7uljC>5`ztS2DoXu(6U9N%;4>2BDEx9nke7=N4#Jz1qVqqXjZ}bLV+>6X*AuLg^p5`r$)Kp{JL6 zoz9ZxqUFE=_N%nrINF`v7vt^S?ce1HJZqcGTKR!ET;ynKVFVSo0Bn`Rz}FhK{rIM} zr#fr8q;e44Kk^u;EtX1}Uc_ahs8WZ3F~mTMGTnVf=HtqyEuUUWeX@=&iSO9@2YPG2 zHMge42_PrL1NID?b0E?+9~%wRJ)#%+>{k?(ZV296e&DGR-wLvTNeEtI+(Od_CxXj| zyb9Uce_*ZuuDO1lXHiG^GY$h_%p$fajfcbLSFZdGlyxV>K#cK=z_>{;is0-KKAOvh ztFTqBTl!(RwSWC{{ndB&4PQ%)2^bz?Jb?>swO2z}`%Z(#K)aR7!EZ1Iwi@(C8OHNP z8R!W2WDL(`6MtLYs;qx*Xf7KX4U{p}Tvb%c=_6Dn`|~aytAM^)j&T`aQP4J<Ug+SdiPG99V-fV2FhJz*4fE; z7#a`vZ9Fn!N>6-(>U#!(f!=c=*t$M^z}aaJuxwpWE5X2CT;y@ngbceu4ql6hfQ-BOr$TR@dhb;Mx)PaX!1} z>W4)6dQkH>-G;HxU&U}3N}lrSZF<1i@$Y$LG;^2O>VzvY;$;B35t~OP6Ui&6K8$*I zwC3q$5LyLBZO`5>I0Jum7DAjA;|Vw^26Jdj;SnzD-_wkHcj3}bB@+lIA(I<&IIM8E z3lH{1!5yu(%u-Y~QEN{*B)lL<1Pl)%?1c*dxK_@wj7LwPnrKVYtn`nLO0cLKjaV9T zvwY6zuKw#wbo|a1b*1h;9_M%`ZeCU~HsEt-iR=>0D0vyg=e%qRDs3y{Rib-i=)_)_ z5S9#H8pheu%yuy_>KDGO+{#u5>#Yxz+NdO7j;HQXmxkx%1}LqgrDCkK_x9oEVqc0% z%Y_^>GO{J$XuJH!>S^Jv1eMl@F1w1$RCq)|jeLYg6BsjGX#wS{RA8)OXKB@G24T(X zGR_53d@%TY`N;UA|MJJ`JHmP5%hY;P!Pm4%&jDk0G(DQ4XM7nVyP^gjxkNt0xoHC! zpB()z@y$-ImBiDO{EXTM4@ zlFTU1ss=DVBo#)UgeEb7i>{)}@$s2NvCSWPuYQrQfIkob$B{*%W zt{tZB8-FS%R7cAx#0UI`c1C`Nl0YQRtI_KotZv_Qruy)nfLIkKG!p7EC1D&CD>#dF z*46aPfB2~tNtU#uxNzoel))P@Tw&3h=1(#B0b?Q`%a#X^Y`+&6M>C87%(VoA;dr>l zr#h(pCi;gT0meuP6H}vC$K7{W?b0b({^*21#$bk`bA~G6L15rJ;VK!RIi)rpt~iQ| zA>A&~0>{XK6I?vIEN^PIAP+D8xonN&%{xE zuJpj){YJA&05#r2ag1*_%E{t|W`zy9{_zec=d$6;#Yq93Q3=U#h@X$*9Cq z*n68XSc^X@&Z3-rGJPaSFb)KR)#u5sHr~m#kORgn%jc;_=bt%$o5|^cJ{;JP>bz?W{z>4D)iieB!+aR*=It{?^*4~YUbMNx zrIMO6BB12R{^z++deoSqHoiusVuH#10bRMT@R7R4Ye}gX&UrPYC*$)TS|O`a_+A49 zd=cjNkX=Zka#(~a>*q=;hcTqLhd+PnDCW7DdL}p?5*ZBM8M7XHzg8-hHl!)U(h&dr zuBjH6YUT4}fRTQFl*=62t>A;bbIAEi?F=J7l)&OJHh*Ec{4CTsF5m1+G2r7_CJ7Ap zY!_+q{+oTBcn@=NRrJX3^=+W(8LpwDiEf^Fr>&~LQDr)=*maB+6a!l&Szm&;Bx6W0XH4k!?FsZ*`%6ic(%1Y4)5B`S^>brC~Zp@zSuY^%YZ>TZ1A8c%T z-1;UA*J&_|Hni0|LfXr8A8%Jf9opu}ybb3f{;=va4KPOVFe&uUvv>5L+U^L3a?Q3` zI5_|K=H*vW6txeAXN~Mg1e30tEX;K;kFmto;%5h^4Lqfu*=4Qw1HDI|0Y=Xs>(}=_ zHQb9=LZe<8??(U{bWsd^Yj9;RS_K{kk)>1+w#rk`dsWccINe#qzKl*2`hMfPS3&V& zDMH1RuqRzN?PW%<_$#YewvmEKW57*;(^)$Z%>Iy^RCiVXN+&OC>j8+gH zd4#LENr)*pHUx29bdO%4^+0LO7_(rBAhL`}9l~b$%JyjktE7H_OXVj%xE&j63}wDD zKK253VMqyB!l--hF_>*_q!|N>I6)7^K~G0VZtXW;GTc7B>M#^@y|eVy4>nQH%MamA zbe~ra(IiB&_>VCrt|S671Oj8`3jyWp<4 zz5oNBBd%Eu8DpC?`iQi)!203>@ABNj zv|>T5W2tfv_KrfT7>D81xI&UygbClmrG@^z#%9)IX1F)fWm>sk!(Gsw_=(y{632mg z_fe&eCk>DXwHXWfV2o*gPu;50y=G&?)k>(nQ9idEM|6yL{KBRExi{kyD8Yc@_{3Te zgrqE+HuDR-q?0FI@i2e}TmrJPYsLOlpDUZc@fxTEw4T?4WiN z7za6dkhB^3FL)zbdh1G1RV05?j8kVv_kOJd>)mCdx?oJMNdR~$i-CY~%3+{?rFu+_ z6t7}%05I~GHZeOcJB--KxPgo3;k{pb%weF#nOeIPnMHn$Hqfh!r!cN*F?5Qt>u>Sm zj|lMP#rYMb6qhAry(swFhJlBd%WcO>v!_s3I5uXOMH6Cg9)=!&x73%aCK9L&o@4LP z15d8tZ3E}=NU~nPbKg21nffz|6O7#r;z3NI;01bQnZKSI#$cpE7Q4f}~a4ePT0gQQWpTK2>!=jLI<^6~@S?mr>k@(+k&SMtUD_R~< zM&hnvSC$N11Tgp;{fyzK7#L@Okw@2#8(~GojZnFP`HLp_AEi9vh{>mt%xC%s&@{AkwDz!z%`F2yz1_dZ^r82^Ir2 zBWm6cTY;1uslK?eb=1TZ{H<9nE;-(0Cv+G{IYlwXzlyJSVQ81j4JM=>A>F(m&u*L} zbk9dQ&AS?Z`ehZ6&vmLPM%usfdO&o;VQ9uk9{FYbVZ`Ntv>eqi!=Q?AM*9!a@LI+= z)ltR7w38hK?kN=W=kBoE-{9vc6AVscL+420`rY17ynsn)R1M?uFB2Y7X-DN0V{+t8 zG4PigP(JC7L0ssEiW>7-RwF>d} z0P4sW`M4bMu-O08o~1&kKvN$g&qKgGdf5s#S&kEol+kaCcK;-eFa zZ}K5G|4AT_hfp2^&u`MQC16y6m!!-ZI{);aA(Mfr|JN84QFH==3e}pxV91n$YoJUJ zuZP$WQ*O8%%zAiF@6SpQ(ZTUOqeOJVc~d=TNYULHh8xs;&ajo_;?qV2UB_XNa(c9m zfcMyAj8PAcF92F-!m&KZ!{;f1v53VF6iNq9Ny=kjuROr0f%b@^1mn>-rl|9)XzUFW z+`j;5p^1^#b3BY_>(M>%-X?mNa{W9T0#Xrv`Hf-=42Zy};M*Ct<#M}>W9R-c#>A-T zBT*<`kMtZ5SOgMPGq+}r(BW8{vW=g14?!-2H}DLO4`MHq!nwb?|1KXfp_X`!JNPPL zG6sAf&&!f_80^;Uuw&vUHX=js2S%(#kHM8lRmCs!7m-$gk;zVAq};)J^nm8R!nf~4 zj|4+uT5~~sA1i7?{{7*C2AWYkQQ##kb>Pd30I&bm@w>$HxyZa@LC(?U1sI9T`Kbgx zO6M>RIE*%zgG-%9>~#*~OULiZUIopMiYhGu7){a`xlu!>hnFUe&qxbngJ-naQUSHl zWQO8xb1mL6GONJIMDxz8QtoC&>_D2kk<=nd>ZKAm53%*X*g1d}2I1XZozhHa1`Ahc@m7h z@L<#;>w>N9D&4q`h$k3W--AZVJpTtB#+aGkxHrKCKj&B?#|OTVR7E?sd8%TJq)*Ut z%g=RiF z7H-4pR4Z~wXyxb5bTB&X^otw!#%Ry9z(PvzOgI+LNCHG*L50iHAuzloC2l315q81# z90>*n5IAx|Pn3l%p84R(gGdWubkK~XLBV|=9_u7~IC-5)hiG3RdA*W{<$IRODE zFc93R;(!O}QfHtJFl2nxF&s-*fKd_mNipy!;2skc&%Y3#M}lZ7MRLA`JZA7ZVxPg4 zIzBBI=?M(c86A}T3Xi)n6;%a&$PiX@$cVx1o6(PrWryI;7MZW4xGojKLk;pt_`CiY_`{$SFzN zF@~~3EEdAz&HU+M*27Vx!^^O22gdsM!jK*&Q?si=eGyrM%^7S1xiX|W(`1osvC?IX zNFgc3fRA`VsE6m{^@_^4ww%*LFgU*BiZrVR7=sxXBU%uQ0@hVnzu}%&7(fr6EK`gP z1B)pghj^j|7%Iv5&~6Ma2USF}Y7 zJ)y7x2F5-vD8mRlbnv<;##mQvUymH{87A%xIr7|4 zulUhFjYl6g@Zh+pB*Ga6KF7frHrThCj=&;NqW50My5AX$E&JD%MN3h$LPIhvUC^26GdDJD;T=BnA9k-l_!t3=s4O4 zKD=sSOKv-m#irNtoLPm_IgF&CZ1-Xq$|_txlA2YefM1u_Tm(K_?qt1^f&J<+0mJg6 z%n1hJ%3jaKKz(=u!};oN9Az~Z>VHHjtkJ?U`YzKL1Fsnx#<&e!gP+0=Xwj(nn=xQ_ zA~<|Xar%A7NfcF;ocg=K;5Nk(q%sUJNieDbL8%m@5)C#kLjx*njRH5q50lE$WZ_9n zDG1^_RcCR4iPFD7m|^G~h8SH9vE&<7;O&=fPzit7)L|ILFvq?JMh_TUYyC-##L>MH zW3<^;&_giFSQhwOcx>P9$ze1Y0={r@4Accm_VHaw)&mw6$}sq*#iqxan&5^KOSlqe@zv8x(+`~voP$w8wTojIB=xE5;en%xS%uIyfz(Ij8xfu_iQ@g{c*b-b$YK?WF}=JPI$6L}0y z!{4MknqkB&FNg2pR=gI)(u44v9wrI#55;*hJvbI87+hIr{WjI3>RyT(hU;%qjHFlX zHrQN%7pyS+8)6K+n}R%`mXn(;DUMaxRvO8HaYJaG6phNjz$(cwuG1r_*+np3;9@Wd zMws&!l&fflQATd1fKh4iUuvY0C(^dEZOaXKn!jaG-(LB{5jaGB2|DZm5zglS^V-wK)SQ5u4G9(*LLZ} zapYMo8-q)%2-jEWLAVfD-8L&bNydqj&t-_A1cSd;3d%4HFvOq4Cl-}r4Biq#$z_8X zN(fUG-ga806%*AaN=Ia-i@#Q*oE&Gvx?SMd6&6t(48@7DM!TaYEozJxFMiJ~ zF{!;+oko1cNxtFlfLScIw4L3JF<#)}+= zCdLp;a~^bm{81AuI)mi$DADG1ctOaclmvqpTX~GP?$0p#2}a?ylE=?s)CHru_ZG`n zJ+-8GK22$u7xG*R*N1H-zLPC|3WYsQZUkCc#c;+F(Bu2x=z|lexPcbJm7Ff~2V|hf zMgzC4Oi_J4hcN?*iCg8gDlH3~ZYuVQCd#23i7^0Xfbr@#DzFSDLA=ge0S2OqF|d$h zuT+nunQ`_YO7pH`BZNw>+C+~GW4eifCbVibY%~^8FbwgIH!_0dfh`DQ(nOf4*2ZLlAu$EZAGd>9x^1{kO}%`IX&#~@1P zOoDN1Rzr6i0)3W8EGEXlssQ3swM=TiLCWCD90u=+G37Bvs5=V6Ei1lddML}yBLZGL z3~r*qWd?ezvSe*4o^$ft4yqZE()cJJF#K~HupxD@P{}ah2*~)S zI4BM|s2%yp9zTnm(2sG_CR{KE0PqS^yxbA0a9g9{H4+psa76iF71PY%FPxhxXJI*2@YFnMdaMXH)%~Xt+n6LtYae5wOaWi2U0b_CMF`Twf zBs$J7!Wxdr;)(C4iC-3W1Ap!x4mkVaCF3z@w}jD+tc#tLCty5wgkR-1Oc;#ufbkcP zaV7C5jIXJ^o-dJ^(uA~6^|T2na+ZttqYuaK*?%2r4|WOE9rA+5z>Kh1g~1%x{1tLA zu33`m^S24DOovaf6y>%;B(*BO|1jmTWkFm0ydILC&$D8Q5r!fvxzQf~P%~J5U{nk$ zY)yaDV`yZcA^B>xlBXY~c-&k*zgTPYSoxIH+IO4`a@k_j<`a~_lViltOy)$2zKUve zS{&`tQ1f-92%P!*CV0eEE;ozIG1Qo2b!oP?P{anu;=gcq)v1+26po+p%z4D{hsNJ0 z%5Z{P6XWe4bvdtK(m(dPAgd z-aUsg^a%9D7|*Ju6DnTnKN}omfq!TU=BIYXNLLG0@kpTwYS_Lc2dZd&a8o{3=^$23 z*pqYSbv(o*3%xQ_465MvWjmY7APec+JzsAoLG};~v~Ffdu~hdUzL?sPI}ttxky)9|K;I?qsQW!_<$VV%b?*kuRbS)o~(WE;=G>?&bMwGT#$CiNUf z+fgAs5@ovaaK~w0{1)d>F;qc}WEcoX!VQmMRDwWrG11q=;Cp^UKQ3tn43k$YJuv>N z8O*$iL4Azu0;aT90GYH;BWesj>E-V`dm0yMdkI07T-NhhyO$exRnrw?P*~%NK1Kgt zG487rbT6;f8jdr@yu~%-u9B!<-nlu#gRIDY< zv!G&dgYl1L!Y%E&C4n(2u6c}qwv0b1qVpWaGA~;dOeogJEiu?Y0KlJ*SUP;Vq4j8LmSr!-YCw>Ru2sRRjeIuE|&~V?=h};hEOWk zTUCw0#!|h7M#|;Kj&LH|m}7y(RN=d_vG$>gq?-hTJDZx26K<-tgdG{_D|B>5Kj*j%1 zC@eAR%-`Bg=9NanRxc=UqLJK8Uhkg6$e8rM%V$nzQl`6boAsD7Uz_?{4T450y7_|@vXE>61YDax-d-%<~> z9n>VYiFYnY^~sLMSR^@W3_fhEr|CX_&-}@|wFE9S8s9D0gb^5)47Tl6%+p zs=s?s9q1T`f`>?t(e;^}UPrzD)Q1`u-{}~OPj?%Uc(-F=>b%JE%TARS*Yo9iG;iYg zH_mBZW3bGnC7fO`7?=hfd8?+v9DTOih{xN+U}2}%=8zCJ+5S2~8&;`nj4b3e>U6s0 zdI*NAB3stxjm!qSAu3&msW5eaA|H0Pz;Lp}5Ox|N$APA2XQk_RyQ>@toV72PYkA)p zrqEpu4UnSyh1{%udursnKV0nd!Wy7OtAib@hMG6g%H#tuM%PF3N{U+L(R}l>XJGsn D5D^i2 literal 0 HcmV?d00001 diff --git a/bmp/flower2.bmp b/bmp/flower2.bmp new file mode 100755 index 0000000000000000000000000000000000000000..edba8a55557c3c829594732fae2e225ae85355f9 GIT binary patch literal 48062 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 UbF>Re>5P1cU)0}?sU7V92cIY(p8x;= literal 0 HcmV?d00001 diff --git a/imagebmp.php b/imagebmp.php new file mode 100644 index 0000000..add7888 --- /dev/null +++ b/imagebmp.php @@ -0,0 +1,99 @@ +conditions["icon"], 0, 2) . "_solid.png"); +imagefilter($icon, IMG_FILTER_NEGATE); +$icon_x = imagesx($icon); +$icon_y = imagesy($icon); +imageantialias($image, true); + +$background = $white; +$line_color = $black; +$highlight_color = $red; + +imagefill($image, 0, 0, $white); + +/* +imagesetthickness($image, 3); +imageline($image, 0, 1, 479, 1, $line_color); +imageline($image, 478, 0, 478, 799, $line_color); +imageline($image, 1, 0, 1, 799, $line_color); +imageline($image, 0, 798, 479, 798, $line_color); + */ + +imagesetthickness($image, 1); +$taskStartY = 3; +$taskCurrentY = $taskStartY; +$taskHeightY = 80; +for ( $i=0; $i<8; $i++ ) { + if ( !isset($tasks[$i]) ) break; + if ( $tasks[$i]->isOverdue() ) { + $color = $red; + } else { + $color = $black; + } + imagerectangle($image, 3, $taskCurrentY, 476, ($taskCurrentY + $taskHeightY), $color); + imagettftext($image, 20, 0, 7, ($taskCurrentY + 18 + 6), $color, $font, $tasks[$i]->getTitle()); + $daysLeftX = 420; + if ( $tasks[$i]->getDaysLeft() > 9 ) $daysLeftX -= 54; + $lines = array("", ""); + $words = explode(" ", $tasks[$i]->getDescription()); + $currentWord = 0; + $currentLine = 0; + while ( ($currentWord < count($words)) && ($currentLine < 2) ) { + $testLine = $lines[$currentLine] . $words[$currentWord] . " "; + $box = imagettfbbox(14, 0, $font, $testLine); + if ( $box[2] >= $daysLeftX ) { + $currentLine++; + } else { + $lines[$currentLine] = $testLine; + $currentWord++; + } + } + imagettftext($image, 14, 0, 7, ($taskCurrentY + 18 + 6 + 23), $color, $font, $lines[0]); + imagettftext($image, 14, 0, 7, ($taskCurrentY + 18 + 6 + 23 + 21), $color, $font, $lines[1]); + imagettftext($image, 70, 0, $daysLeftX, ($taskCurrentY + $taskHeightY - 5), $color, $font, $tasks[$i]->getDaysLeft()); + $taskCurrentY += $taskHeightY + $taskStartY + 1; +} +//imagestring($image, 1, 20, 20, "This is some text", $line_color); +//imagestring($image, 2, 20, 50, "This is some text", $line_color); +//imagestring($image, 3, 20, 80, "This is some text", $line_color); +//imagestring($image, 4, 20, 110, "This is some text", $line_color); +//imagestring($image, 5, 20, 140, "This is some text", $line_color); +//imagettftext($image, 20, -45, 20, 270, $line_color, $font, "This is some text"); +imagesetthickness($image, 3); +imagerectangle($image, 250, 675, 472, 792, $line_color); +imagecopymerge($image, $icon, 400, 680, 0, 0, $icon_x, $icon_y, 100); +imagettftext($image, 55, 0, 260, 735, $line_color, $font, intval($weather->temps["current"]) . html_entity_decode("°")); +imagettftext($image, 18, 0, 345, 735, $line_color, $font, "/ " . intval($weather->stats["feels_like"]) . $deg); +imagettftext($image, 15, 0, 256, 762, $line_color, $font, "High: " . intval($weather->temps["max"]) . $deg); +imagettftext($image, 15, 0, 261, 782, $line_color, $font, "Low: " . intval($weather->temps["min"]) . $deg); +imagettftext($image, 15, 0, 350, 762, $line_color, $font, "Humid: " . $weather->stats["humidity"] . "%"); +imagettftext($image, 15, 0, 364, 782, $line_color, $font, "Wind: " . intval($weather->stats["wind_speed"])); + +//imagefilter($image, IMG_FILTER_GRAYSCALE); +imagefilter($image, IMG_FILTER_CONTRAST, -1000); + +//header("Content-type: image/bmp"); +//imagebmp($image); +imagebmp($image, __DIR__ . '/render/image.bmp'); +$b = new Imagick(__DIR__ . '/render/image.bmp'); +$b->setImageType(Imagick::IMGTYPE_BILEVEL); +$b->setFormat('bmp'); +$b->writeImage(__DIR__ . '/render/image_1.bmp'); + +exit(); diff --git a/render/README.md b/render/README.md new file mode 100644 index 0000000..ec57b8a --- /dev/null +++ b/render/README.md @@ -0,0 +1,3 @@ +# Folder for dynamically created images + +This folder is the destination for the pre-rendered bitmaps used to display on the ePaper.