您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
小编给大家分享一下PHP基于imagick扩展如何合成图片,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
具体如下:
方法一:compositeimages
/**
* 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();
}方法二: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(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基于imagick扩展如何合成图片”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。