温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

PHP基于imagick扩展如何合成图片

发布时间:2021-07-13 11:44:57 来源:亿速云 阅读:170 作者:小新 栏目:开发技术

小编给大家分享一下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扩展如何合成图片”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI