首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

PHP将多图合成GIF

在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,如果需要保持原图大小可以去除这行代码

  • 发表于:
  • 原文链接https://page.om.qq.com/page/OniFQO-5IOXlhjFRniLOZaNQ0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券