在不破坏动画的情况下调整动画GIF文件的大小

2022-08-30 10:59:02

我需要在不破坏动画的情况下调整动画GIF文件的大小。

我如何使用PHP来做到这一点?


答案 1

如果您有 imagemagick 访问权限,则可以执行以下操作:

system("convert big.gif -coalesce coalesce.gif");
system("convert -size 200x100 coalesce.gif -resize 200x10 small.gif");

如果您没有system()访问权限,这很可能是使用imagemagick插件实现的

注意:由于合并实质上取消了图像的优化,这可能会创建较大的文件大小,但尺寸较小的图像。

更新:如果您没有 ImageMagick 访问权限,您应该能够使用以下步骤的组合来调整 gif 动画的大小(假设您具有 GD 访问权限):

  1. 检测图像是否是动画GIF:我可以使用php和gd检测动画GIF吗?(顶部答案)
  2. 将动画 GIF 拆分为单个帧:http://www.phpclasses.org/package/3234-PHP-Split-GIF-animations-into-multiple-images.html
  3. 调整单个帧的大小:http://www.akemapa.com/2008/07/10/php-gd-resize-transparent-image-png-gif/
  4. 再次将帧重构为动画 GIF:http://www.phpclasses.org/package/3163-PHP-Generate-GIF-animations-from-a-set-of-GIF-images.html

这肯定比ImageMagick路线要密集得多,但从技术上讲应该是可行的。

如果您让它工作,请与世界分享!


答案 2

尝试GDEnhancer(使用ImageCraft)。它只需要GD库,并保持gif动画


推荐