PHP操作Imagick库打印数字矩阵_PHP教程

php中文网
发布: 2016-07-15 13:26:35
原创
1205人浏览过

php操作imagick库可以实现不少图片效果,比如在一张图片上,打印8*10的数字矩阵。以上效果的实现方法如下:

PHP操作Imagick库代码

<OL class=dp-c><LI class=alt><SPAN><SPAN class=comment><FONT color=#008200>//格子的尺寸 </FONT></SPAN><SPAN> </SPAN></SPAN><LI class=""><SPAN></SPAN><SPAN class=vars><FONT color=#dd0000>$grid_font_size</FONT></SPAN><SPAN> = 18;           </SPAN><SPAN class=comment><FONT color=#008200>//字体大小 </FONT></SPAN><SPAN> </SPAN></SPAN><LI class=alt><SPAN></SPAN><SPAN class=vars><FONT color=#dd0000>$grid_font_color</FONT></SPAN><SPAN> = </SPAN><SPAN class=string><FONT color=#0000ff>"#000"</FONT></SPAN><SPAN>;      </SPAN><SPAN class=comment><FONT color=#008200>//字体颜色 </FONT></SPAN><SPAN> </SPAN></SPAN><LI class=""><SPAN></SPAN><SPAN class=vars><FONT color=#dd0000>$grid_width</FONT></SPAN><SPAN> = 36;               </SPAN><SPAN class=comment><FONT color=#008200>//格子的宽度 </FONT></SPAN><SPAN> </SPAN></SPAN><LI class=alt><SPAN></SPAN><SPAN class=vars><FONT color=#dd0000>$grid_height</FONT></SPAN><SPAN> = 24;              </SPAN><SPAN class=comment><FONT color=#008200>//格子的高度 </FONT></SPAN><SPAN> </SPAN></SPAN><LI class=""><SPAN></SPAN><SPAN class=vars><FONT color=#dd0000>$grid_origin_x</FONT></SPAN><SPAN> = 15;           </SPAN><SPAN class=comment><FONT color=#008200>//左上角的数字的起始横坐标 </FONT></SPAN><SPAN> </SPAN></SPAN><LI class=alt><SPAN></SPAN><SPAN class=vars><FONT color=#dd0000>$grid_origin_y</FONT></SPAN><SPAN> = 98;            </SPAN><SPAN class=comment><FONT color=#008200>//左上角的数字的起始纵坐标 </FONT></SPAN><SPAN> </SPAN></SPAN><LI class=""><SPAN> </SPAN><LI class=alt><SPAN> #原图  </SPAN><LI class=""><SPAN> </SPAN><SPAN class=vars><FONT color=#dd0000>$image</FONT></SPAN><SPAN> = </SPAN><SPAN class=keyword><STRONG><FONT color=#006699>new</FONT></STRONG></SPAN><SPAN> Imagick(</SPAN><SPAN class=string><FONT color=#0000ff>'background.jpg'</FONT></SPAN><SPAN>);  </SPAN></SPAN><LI class=alt><SPAN>   </SPAN><LI class=""><SPAN> #写入密保卡数据  </SPAN><LI class=alt><SPAN> </SPAN><SPAN class=vars><FONT color=#dd0000>$tmp_grid_origin_x</FONT></SPAN><SPAN> = </SPAN><SPAN class=vars><FONT color=#dd0000>$grid_origin_x</FONT></SPAN><SPAN>;  </SPAN></SPAN><LI class=""><SPAN> </SPAN><SPAN class=vars><FONT color=#dd0000>$tmp_grid_origin_y</FONT></SPAN><SPAN> = </SPAN><SPAN class=vars><FONT color=#dd0000>$grid_origin_y</FONT></SPAN><SPAN>;  </SPAN></SPAN><LI class=alt><SPAN> </SPAN><SPAN class=keyword><STRONG><FONT color=#006699>foreach</FONT></STRONG></SPAN><SPAN> (</SPAN><SPAN class=vars><FONT color=#dd0000>$pData</FONT></SPAN><SPAN> </SPAN><SPAN class=keyword><STRONG><FONT color=#006699>as</FONT></STRONG></SPAN><SPAN> </SPAN><SPAN class=vars><FONT color=#dd0000>$k</FONT></SPAN><SPAN> => </SPAN><SPAN class=vars><FONT color=#dd0000>$v</FONT></SPAN><SPAN>){  </SPAN></SPAN><LI class=""><SPAN>   </SPAN><SPAN class=keyword><STRONG><FONT color=#006699>foreach</FONT></STRONG></SPAN><SPAN> (</SPAN><SPAN class=vars><FONT color=#dd0000>$v</FONT></SPAN><SPAN> </SPAN><SPAN class=keyword><STRONG><FONT color=#006699>as</FONT></STRONG></SPAN><SPAN> </SPAN><SPAN class=vars><FONT color=#dd0000>$k_grid_data</FONT></SPAN><SPAN> => </SPAN><SPAN class=vars><FONT color=#dd0000>$v_grid_data</FONT></SPAN><SPAN>){  </SPAN></SPAN><LI class=alt><SPAN>     </SPAN><SPAN class=vars><FONT color=#dd0000>$tmp_grid_origin_x</FONT></SPAN><SPAN> += </SPAN><SPAN class=vars><FONT color=#dd0000>$grid_width</FONT></SPAN><SPAN>;  </SPAN></SPAN><LI class=""><SPAN>     </SPAN><SPAN class=vars><FONT color=#dd0000>$draw</FONT></SPAN><SPAN> = </SPAN><SPAN class=keyword><STRONG><FONT color=#006699>new</FONT></STRONG></SPAN><SPAN> ImagickDraw();  </SPAN></SPAN><LI class=alt><SPAN>     </SPAN><SPAN class=vars><FONT color=#dd0000>$draw</FONT></SPAN><SPAN>->setFillColor(</SPAN><SPAN class=vars><FONT color=#dd0000>$grid_font_color</FONT></SPAN><SPAN>);  </SPAN></SPAN><LI class=""><SPAN>     </SPAN><SPAN class=vars><FONT color=#dd0000>$draw</FONT></SPAN><SPAN>->setFontSize(</SPAN><SPAN class=vars><FONT color=#dd0000>$grid_font_size</FONT></SPAN><SPAN>);  </SPAN></SPAN><LI class=alt><SPAN>     </SPAN><SPAN class=vars><FONT color=#dd0000>$draw</FONT></SPAN><SPAN>->annotation(</SPAN><SPAN class=vars><FONT color=#dd0000>$tmp_grid_origin_x</FONT></SPAN><SPAN>, </SPAN><SPAN class=vars><FONT color=#dd0000>$tmp_grid_origin_y</FONT></SPAN><SPAN>, </SPAN><SPAN class=vars><FONT color=#dd0000>$v_grid_data</FONT></SPAN><SPAN>);  </SPAN></SPAN><LI class=""><SPAN>     </SPAN><SPAN class=vars><FONT color=#dd0000>$image</FONT></SPAN><SPAN>->drawImage(</SPAN><SPAN class=vars><FONT color=#dd0000>$draw</FONT></SPAN><SPAN>);  </SPAN></SPAN><LI class=alt><SPAN>   }  </SPAN><LI class=""><SPAN>   </SPAN><SPAN class=vars><FONT color=#dd0000>$tmp_grid_origin_x</FONT></SPAN><SPAN> = </SPAN><SPAN class=vars><FONT color=#dd0000>$grid_origin_x</FONT></SPAN><SPAN>;  </SPAN></SPAN><LI class=alt><SPAN>   </SPAN><SPAN class=vars><FONT color=#dd0000>$tmp_grid_origin_y</FONT></SPAN><SPAN> += </SPAN><SPAN class=vars><FONT color=#dd0000>$grid_height</FONT></SPAN><SPAN>;  </SPAN></SPAN><LI class=""><SPAN> }  </SPAN><LI class=alt><SPAN> </SPAN><SPAN class=vars><FONT color=#dd0000>$image</FONT></SPAN><SPAN>->writeImage(</SPAN><SPAN class=vars><FONT color=#dd0000>$ks_ImageSrcPath</FONT></SPAN><SPAN>. </SPAN><SPAN class=vars><FONT color=#dd0000>$pSN</FONT></SPAN><SPAN>. </SPAN><SPAN class=string><FONT color=#0000ff>'.jpg'</FONT></SPAN><SPAN>);  </SPAN></SPAN><LI class=""><SPAN> </SPAN><LI class=alt><SPAN> #释放资源  </SPAN><LI class=""><SPAN> </SPAN><SPAN class=vars><FONT color=#dd0000>$image</FONT></SPAN><SPAN>->destroy();  </SPAN></SPAN><LI class=alt><SPAN> </SPAN><SPAN class=vars><FONT color=#dd0000>$draw</FONT></SPAN><SPAN>->destroy();  </SPAN></SPAN><LI class=""><SPAN> </SPAN></LI></OL>
登录后复制

这样做的后果是,在每次循环的时候,都要实例化一个ImagickDraw,并执行drawImage方法,非常占用CPU资源。

可以从以下两点优化:

1. 不必每次都执行new操作,一个就够了;

落笔AI
落笔AI

AI写作,AI写网文、AI写长篇小说、短篇小说

落笔AI 41
查看详情 落笔AI

立即学习PHP免费学习笔记(深入)”;

2. 不必每次都执行drawImage方法,一次就够了。也就是说,annotation方法好像具有“附加”的意味,不用担心后来的覆盖掉之前的;

PHP操作Imagick库优化后代码如下:

<OL class=dp-c><LI class=alt><SPAN><SPAN class=vars><FONT color=#dd0000>$draw</FONT></SPAN><SPAN> = </SPAN><SPAN class=keyword><STRONG><FONT color=#006699>new</FONT></STRONG></SPAN><SPAN> ImagickDraw();  </SPAN></SPAN><LI class=""><SPAN></SPAN><SPAN class=vars><FONT color=#dd0000>$draw</FONT></SPAN><SPAN>->setFillColor(</SPAN><SPAN class=vars><FONT color=#dd0000>$grid_font_color</FONT></SPAN><SPAN>);  </SPAN></SPAN><LI class=alt><SPAN></SPAN><SPAN class=vars><FONT color=#dd0000>$draw</FONT></SPAN><SPAN>->setFontSize(</SPAN><SPAN class=vars><FONT color=#dd0000>$grid_font_size</FONT></SPAN><SPAN>);  </SPAN></SPAN><LI class=""><SPAN></SPAN><SPAN class=keyword><STRONG><FONT color=#006699>foreach</FONT></STRONG></SPAN><SPAN> (</SPAN><SPAN class=vars><FONT color=#dd0000>$pData</FONT></SPAN><SPAN> </SPAN><SPAN class=keyword><STRONG><FONT color=#006699>as</FONT></STRONG></SPAN><SPAN> </SPAN><SPAN class=vars><FONT color=#dd0000>$k</FONT></SPAN><SPAN> => </SPAN><SPAN class=vars><FONT color=#dd0000>$v</FONT></SPAN><SPAN>){  </SPAN></SPAN><LI class=alt><SPAN>  </SPAN><SPAN class=keyword><STRONG><FONT color=#006699>foreach</FONT></STRONG></SPAN><SPAN> (</SPAN><SPAN class=vars><FONT color=#dd0000>$v</FONT></SPAN><SPAN> </SPAN><SPAN class=keyword><STRONG><FONT color=#006699>as</FONT></STRONG></SPAN><SPAN> </SPAN><SPAN class=vars><FONT color=#dd0000>$k_grid_data</FONT></SPAN><SPAN> => </SPAN><SPAN class=vars><FONT color=#dd0000>$v_grid_data</FONT></SPAN><SPAN>){  </SPAN></SPAN><LI class=""><SPAN>    </SPAN><SPAN class=vars><FONT color=#dd0000>$tmp_grid_origin_x</FONT></SPAN><SPAN> += </SPAN><SPAN class=vars><FONT color=#dd0000>$grid_width</FONT></SPAN><SPAN>;  </SPAN></SPAN><LI class=alt><SPAN>    </SPAN><SPAN class=vars><FONT color=#dd0000>$draw</FONT></SPAN><SPAN>->annotation(</SPAN><SPAN class=vars><FONT color=#dd0000>$tmp_grid_origin_x</FONT></SPAN><SPAN>, </SPAN><SPAN class=vars><FONT color=#dd0000>$tmp_grid_origin_y</FONT></SPAN><SPAN>, </SPAN><SPAN class=vars><FONT color=#dd0000>$v_grid_data</FONT></SPAN><SPAN>);  </SPAN></SPAN><LI class=""><SPAN>  }  </SPAN><LI class=alt><SPAN>   </SPAN><SPAN class=vars><FONT color=#dd0000>$tmp_grid_origin_x</FONT></SPAN><SPAN> = </SPAN><SPAN class=vars><FONT color=#dd0000>$grid_origin_x</FONT></SPAN><SPAN>;  </SPAN></SPAN><LI class=""><SPAN>   </SPAN><SPAN class=vars><FONT color=#dd0000>$tmp_grid_origin_y</FONT></SPAN><SPAN> += </SPAN><SPAN class=vars><FONT color=#dd0000>$grid_height</FONT></SPAN><SPAN>;  </SPAN></SPAN><LI class=alt><SPAN>}  </SPAN><LI class=""><SPAN></SPAN><SPAN class=vars><FONT color=#dd0000>$image</FONT></SPAN><SPAN>->drawImage(</SPAN><SPAN class=vars><FONT color=#dd0000>$draw</FONT></SPAN><SPAN>);  </SPAN></SPAN></LI></OL>
登录后复制


www.bkjia.comtruehttp://www.bkjia.com/PHPjc/446600.htmlTechArticlePHP操作Imagick库可以实现不少图片效果,比如在一张图片上,打印8*10的数字矩阵。以上效果的实现方法如下: PHP操作Imagick库代码 //格子的尺...
相关标签:
php
全能打印神器
全能打印神器

全能打印神器是一款非常好用的打印软件,可以在电脑、手机、平板电脑等设备上使用。支持无线打印和云打印,操作非常简单,使用起来也非常方便,有需要的小伙伴快来保存下载体验吧!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号