首页 > 代码库 > ImageMagick两个版本对imagick合成图片的一点差异
ImageMagick两个版本对imagick合成图片的一点差异
第一次听说imagick,然后使用,强大到任性,任性到手册上资料也少,合成一张图毕竟还是很容易的。
本地执行完全OK,到了服务器上,没有任何输出,一点小问题,来源于版本。
/** * 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'); $canvas -> setimageformat($img_type); $i = $j = 0; foreach ($img_list as $item) { $im = null; $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, Imagick::COMPOSITE_OVER, $x, $y); $canvas -> compositeimage($im, $im->getImageCompose(), $x, $y); if (($i + 1) % $line_num === 0) { $i = 0; $j++; } else { $i++; } $im -> clear(); $im -> destroy(); } $canvas -> writeimage($output_url); $canvas -> clear(); $canvas -> destroy(); }
注意上面32行和43行:
$v = Imagick::getVersion();
Array
(
[versionNumber] => 1576
[versionString] => ImageMagick 6.2.8 05/07/12 Q16 file:/usr/share/ImageMagick-6.2.8/doc/index.html
)
版本6.2.8合成失败,解决方案:
(
[versionNumber] => 1576
[versionString] => ImageMagick 6.2.8 05/07/12 Q16 file:/usr/share/ImageMagick-6.2.8/doc/index.html
)
版本6.2.8合成失败,解决方案:
一、修改32行为:
$canvas -> compositeimage($im, Imagick::COMPOSITE_OVER, $x, $y);
二、修改43行为:
$canvas -> writeimages($output_url,true);
ImageMagick两个版本对imagick合成图片的一点差异
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。