PHP基于imagick扩展实现合成图片的两种方法【附imagick扩展下载】
php  /  管理员 发布于 7年前   743
本文实例讲述了PHP基于imagick扩展实现合成图片的两种方法。分享给大家供大家参考,具体如下: 方法一:compositeimages 方法二:combineimages 个人认为方法二效率更高 附: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:\php\ext目录 PHP5.2.17本站下载地址: 32位:softs/26087.html 64位:softs/479475.html 2、PHP5.3.18 必须安装 imagemagick 已经没有可用的单文件dll了 1)官方下载地址: http://www.imagemagick.org/download/binaries/ImageMagick-6.8.0-4-Q16-windows-dll.exe 2)根据你的php安装模式下载 php_imagick 线程安全: 点击此处本站下载。 复制到c:\php\ext目录,增加扩展例如:extension=php_imagick_nts.dll 3、PHP5.4.8 必须安装 imagemagick 已经没有可用的单文件dll了 1)官方下载地址: http://www.imagemagick.org/download/binaries/ImageMagick-6.8.0-4-Q16-windows-dll.exe 2)根据你的PHP安装模式下载 php_imagick 无线程安全: 点击此处本站下载。 复制到c:\php\ext目录,增加扩展例如:extension=php_imagick.dll 以上安装本人都测试过,安装了重启iis或Apache服务器,然后查看phpinfo看看有没有 imagick 如果没有的话,请检查权限或者重新做一次。 更多关于PHP相关内容感兴趣的读者可查看本站专题:《PHP图形与图片操作技巧汇总》、《php面向对象程序设计入门教程》、《PHP数组(Array)操作技巧大全》、《php字符串(string)用法总结》及《PHP数学运算技巧总结》 希望本文所述对大家PHP程序设计有所帮助。/*** 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(count($img_list)/$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($img_type); $i = $j = 0; foreach ($img_list as $item) { $im = new Imagick($item); $x = $logo_info['line_width']*2 + $i * $logo_info['width']; $y = $logo_info['line_height']*2 + $j * $logo_info['height']; // $canvas->compositeimage($im -> getimage(), Imagick::COMPOSITE_OVER, $x, $y); $canvas -> compositeimage($im, $im->getImageCompose(), $x, $y); if (($i + 1) % $line_num === 0) { $i = 0; $j++; } else { $i++; } // unset($im); $im -> destroy(); } $canvas->writeimage($output_url); //销毁对象 $canvas -> destroy();}
/*** 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(count($img_list)/$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 ($img_list as $item) { $im = null; $im = new Imagick($item); // $canvas -> readImage($item); $canvas -> addimage($im); $im -> clear(); $im -> destroy(); } // $canvas -> flattenImages(); $canvas -> combineImages( Imagick::CHANNEL_ALL ); $canvas -> writeimage($output_url); //销毁对象 $canvas -> clear(); $canvas -> destroy();}
然后给php.ini扩展里面增加:extension=php_imagick_st-Q16.dll 最简单和绿色的方法
ps:还有诸如php_imagick_st-Q8.dll(8色),php_imagick_dyn-Q16.dll(需要安装imagemagick)就完全没必要管他们了您可能感兴趣的文章:
122 在
学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..123 在
Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..原梓番博客 在
在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..博主 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..1111 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
Copyright·© 2019 侯体宗版权所有·
粤ICP备20027696号