PHP基于imagick扩展实现合成图片的两种方法_php技巧

来源:http://www.sh-fengwen.com 作者:家常菜谱 人气:133 发布时间:2019-11-26
摘要:本文实例讲述了PHP基于imagick扩展实现合成图片的两种方法。分享给大家供大家参考,具体如下: PHPManual里,对imagick的描述,真的是简洁,每个成员函数,点击打开就看到如下文本:复

本文实例讲述了PHP基于imagick扩展实现合成图片的两种方法。分享给大家供大家参考,具体如下:

PHP Manual里,对imagick的描述,真的是简洁,每个成员函数,点击打开就看到如下文本:复制代码 代码如下:WarningThis function is currently not documented; only its argument list is available.刚才解决了PHP加载问题后,对图片的处理相当方便,网上随便找了一段:复制代码 代码如下:getImageWidth(); $h = $imagick->getImageHeight(); if ($w > $width || $h > $height) { if { $imagick->cropThumbnailImage; } else { $imagick->resizeImage($width, $height, Imagick::FILTER_LANCZOS, 1, true); } } $processed_image = $imagick->getImageBlob(); return $processed_image;}$s=resize;echo $s;?>但我要用这个扩展做的,是将PDF转成PNG。PDF哦!复制代码 代码如下:setResolution; $im->setCompressionQuality $im->readImage; else $im->readImage; foreach { $Var->setImageFormat; $filename = $path."/". md5.'.png'; if($Var->writeImage { $Return[] = $filename; } } return $Return; } $path="images";//请确保当前目录下有这个文件夹,由于一直要用,所以就不加检测了$s=pdf2png;$scount=count;for{ echo "

方法一:compositeimages

Page".."
图片 1

/*** function: 合成图片* @param string $output_url 图片保存路径* @param string $img_type 图片保存类型* @param integral $line_num 每行显示图片数量* @param array $logo_info 每张待合成图片的信息* @param array $img_list 待合成的图片绝对路径** @return void*/public function generate($output_url, $img_type, $line_num, $logo_info, $img_list=array { //计算图片有多少行 $lines = ceil/$line_num); $bg_width = ($logo_info['width'] + $logo_info['line_width']) * $line_num; $bg_height = ($logo_info['height'] + $logo_info['line_height']) * $lines; //构建画布 $canvas = new Imagick(); $canvas->newimage($bg_width, $bg_height, 'white'); $canvas->setimageformat; $i = $j = 0; foreach  { $im = new Imagick; $x = $logo_info['line_width']*2 + $i * $logo_info['width']; $y = $logo_info['line_height']*2 + $j * $logo_info['height']; // $canvas->compositeimage, Imagick::COMPOSITE_OVER, $x, $y); $canvas -> compositeimage($im, $im->getImageCompose; if  % $line_num === 0) { $i = 0; $j++; } else { $i++; } // unset; $im -> destroy(); } $canvas->writeimage; //销毁对象 $canvas -> destroy();}

";}?> 跟上面的差不多吧?可是总是不成功,readImage那边异常了,查看错误输出:复制代码 代码如下:PHP Fatal error: Uncaught exception 'ImagickException' with message 'PostscriptDelegateFailed `test.pdf': No such file or directory'百度谷歌了好久,最后灵机一动,不是说Postscript么?我找,我装。这个Postscript,其实是GhostScript。装好后,一跑,OK啦!

方法二:combineimages

/*** function: 合成图片* @param string $output_url 图片保存路径* @param string $img_type 图片保存类型* @param integral $line_num 每行显示图片数量* @param array $logo_info 每张待合成图片的信息* @param array $img_list 待合成的图片绝对路径** @return void*/public function generate($output_url, $img_type, $line_num, $logo_info, $img_list=array { //计算图片有多少行 $lines = ceil/$line_num); $bg_width = ($logo_info['width'] + $logo_info['line_width']) * $line_num; $bg_height = ($logo_info['height'] + $logo_info['line_height']) * $lines; //构建画布 $canvas = null; $canvas = new Imagick(); $canvas -> newimage($bg_width, $bg_height, 'white'); $i = $j = 0; foreach  { $im = null; $im = new Imagick; // $canvas -> readImage; $canvas -> addimage; $im -> destroy(); } // $canvas -> flattenImages(); $canvas -> combineImages( Imagick::CHANNEL_ALL ); $canvas -> writeimage; //销毁对象 $canvas -> clear(); $canvas -> destroy();}

个人认为方法二效率更高

附:windows下面php5.2.17和php5.3.18和php5.4.8各个版本的imagick组件下载

1、PHP5.2.17我安装成功了,用的星外PHP5.2.17直接安装程序,下载imagick版本如下:

点击此处本站下载

已经包含imagemagick不需要安装任何东西,直接把php_imagick_st-Q16.dll复制到c:phpext目录然后给php.ini扩展里面增加:extension=php_imagick_st-Q16.dll 最简单和绿色的方法ps:还有诸如php_imagick_st-Q8.dll,php_imagick_dyn-Q16.dll就完全没必要管他们了

PHP5.2.17本站下载地址:

32位://www.jb51.net/softs/26087.html

64位://www.jb51.net/softs/479475.html

本文由美高梅游戏平台网站发布于家常菜谱,转载请注明出处:PHP基于imagick扩展实现合成图片的两种方法_php技巧

关键词:

上一篇:2018年8月Top 10 Python开源项目

下一篇:没有了

最火资讯