本文实例讲述了PHP基于imagick扩展实现合成图片的两种方法。分享给大家供大家参考,具体如下:
方法一:compositeimages
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(),$y);
if (($i + 1) % $line_num === 0) {
$i = 0;
$j++;
} else {
$i++;
}
// unset($im);
$im -> destroy();
}
$canvas->writeimage($output_url);
//销毁对象
$canvas -> destroy();
}
方法二:combineimages
newimage($bg_width,'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();
}
个人认为方法二效率更高
附: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目录
然后给PHP.ini扩展里面增加:extension=PHP_imagick_st-Q16.dll 最简单和绿色的方法
ps:还有诸如PHP_imagick_st-Q8.dll(8色),PHP_imagick_dyn-Q16.dll(需要安装imagemagick)就完全没必要管他们了
PHP5.2.17本站下载地址:
32位:
64位:
2、PHP5.3.18 必须安装 imagemagick 已经没有可用的单文件dll了
1)官方下载地址:
2)根据你的PHP安装模式下载 PHP_imagick
线程安全:
点击此处本站下载。
复制到c:\PHP\ext目录,增加扩展例如:extension=PHP_imagick_nts.dll
3、PHP5.4.8 必须安装 imagemagick 已经没有可用的单文件dll了
1)官方下载地址:
2)根据你的PHP安装模式下载 PHP_imagick
无线程安全:
点击此处本站下载。
复制到c:\PHP\ext目录,增加扩展例如:PHP_imagick.dll
以上安装本人都测试过,安装了重启iis或Apache服务器,然后查看PHPinfo看看有没有 imagick 如果没有的话,请检查权限或者重新做一次。
更多关于PHP相关内容感兴趣的读者可查看本站专题:《》、《》、《》、《》及《PHP数学运算技巧总结》
希望本文所述对大家PHP程序设计有所帮助。