gpt4 book ai didi

PHP基于imagick扩展实现合成图片的两种方法【附imagick扩展下载】

转载 作者:qq735679552 更新时间:2022-09-28 22:32:09 29 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章PHP基于imagick扩展实现合成图片的两种方法【附imagick扩展下载】由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

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

方法一:compositeimages 。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
/**
* 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 。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
/**
* 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();
}

个人认为方法二效率更高 。

附: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)就完全没必要管他们了 。

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程序设计有所帮助.

原文链接:http://blog.csdn.net/littlebo01/article/details/41753089 。

最后此篇关于PHP基于imagick扩展实现合成图片的两种方法【附imagick扩展下载】的文章就讲到这里了,如果你想了解更多关于PHP基于imagick扩展实现合成图片的两种方法【附imagick扩展下载】的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com