源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

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

  • 时间:2020-10-05 18:20 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:PHP基于imagick扩展实现合成图片的两种方法【附imagick扩展下载】
本文实例讲述了PHP基于imagick扩展实现合成图片的两种方法。分享给大家供大家参考,具体如下: [b]方法一:compositeimages[/b]
/**
* 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();
}

[b]方法二:combineimages[/b]
/**
* 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();
}

个人认为方法二效率更高 [b]附:windows下面php5.2.17和php5.3.18和php5.4.8各个版本的imagick组件下载[/b] 1、PHP5.2.17我安装成功了,用的星外PHP5.2.17直接安装程序,下载imagick版本如下: 点击此处[url=http://xiazai.jb51.net/201711/yuanma/php_imagick_st-Q16_for_php5.2.17(jb51.net).rar][b]本站下载[/b][/url]。 已经包含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位:[url=http://www.1sucai.cn/softs/26087.html]http://www.1sucai.cn/softs/26087.html[/url] 64位:[url=http://www.1sucai.cn/softs/479475.html]http://www.1sucai.cn/softs/479475.html[/url] 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 线程安全: 点击此处[url=http://xiazai.jb51.net/201711/yuanma/php_imagick_ts__PHP5.3.18(jb51.net).rar][b]本站下载[/b][/url]。 复制到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 无线程安全: 点击此处[url=http://xiazai.jb51.net/201711/yuanma/php_imagick_nts_for_PHP5.4.8(jb51.net).rar][b]本站下载[/b][/url]。 复制到c:\php\ext目录,增加扩展例如:extension=php_imagick.dll 以上安装本人都测试过,安装了重启iis或Apache服务器,然后查看phpinfo看看有没有 imagick 如果没有的话,请检查权限或者重新做一次。 更多关于PHP相关内容感兴趣的读者可查看本站专题:《[url=http://www.1sucai.cn/Special/455.htm]PHP图形与图片操作技巧汇总[/url]》、《[url=http://www.1sucai.cn/Special/43.htm]php面向对象程序设计入门教程[/url]》、《[url=http://www.1sucai.cn/Special/623.htm]PHP数组(Array)操作技巧大全[/url]》、《[url=http://www.1sucai.cn/Special/47.htm]php字符串(string)用法总结[/url]》及《[url=http://www.1sucai.cn/Special/630.htm]PHP数学运算技巧总结[/url]》 希望本文所述对大家PHP程序设计有所帮助。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部