PHP将多图转GIF

简介:PHP将多图合成GIF,Imagick图片合成gif并设置动画效果,imagick扩展安装

在PHP中想要将多张图片合成一张GIF图,只能依靠GD或者imagick这两个扩展。GD比较老,还算比较稳定,但是php7.3之后官网就不建议使用GD,官方推荐Imagick扩展绘制图片。

一 安装Imagick扩展

1.1 安装ImageMagick之前需要安装一些Linux扩展包,比如 ImageMagick-devel 扩展包,否则会报如下错误信息

安装方式如下:

yum install -y ImageMagick-devel libwebp-devel libwebp-tools

1.2 下载并安装imagick扩展:对于PHP扩展,大家可以从PHP官网库pecl中下载:

# 下载源码
wget https://pecl.php.net/get/imagick-3.7.0.tgz
# 解压缩
tar -zxvf imagick-3.7.0.tgz
# 使用 phpize 生成编译配置文件
/usr/local/php/bin/phpize
# 编译
./configure --with-php-config=/usr/local/php/bin/php-config
# 安装
make && make install

1.3 修改PHP配置文件使其生效

使用vim编辑/usr/local/php/lib/php.ini文件,添加如下信息:

extension=imagick.so

注意:如果不知道PHP配置文件具体位置的,可以使用 php --ini 查看

二 使用Imagick合成GIF

$animation = new \Imagick();
$animation->setFormat('gif');
foreach ($img_path_arr as $file) {
    $img = new \Imagick($file);
    $img->thumbnailImage(500,500);//读取本地图片
    //设置图像处理方法,3:清除此帧覆盖之前的图像 2:使用背景色清除边框区域 1:不要丢弃,只覆盖下一帧图像 0:未指定处置(相当于“无”)
    $img->setImageDispose(3);
    $animation->addImage($img);//将图片加入到gif中
    $animation->setImageDelay(100);//转场动画时间
    $animation->nextImage();

    unset($img);
}
//保存gif
$output_path = 'output.gif';
//注意:是writeImages而不是writeImage方法
$animation->writeImages($output_path,true);

注意:$img->thumbnailImage(500,500);是将图片大小修改成500*500,如果需要保持原图大小可以去除这行代码

我都博客网站做了一个免费在线的简易版多图合成GIF的工具,需要的可以去体验一下

有遗漏或者不对的可以在我的公众号留言哦

编程经验共享公众号二维码

编程经验共享公众号二维码
更多内容关注公众号
Copyright © 2021 编程经验共享 赣ICP备2021010401号-1