我需要在不破坏动画的情况下调整动画 GIF 文件的大小。
我如何使用 PHP 来做到这一点?
最佳答案
如果你有 imagemagick 访问权限,你可以这样做:
system("convert big.gif -coalesce coalesce.gif");
system("convert -size 200x100 coalesce.gif -resize 200x10 small.gif");
如果您没有 system() 访问权限,这很可能通过 imagemagick 插件实现
注意:这可能会通过较小尺寸的图像创建较大的文件大小,因为合并本质上会取消优化图像。
更新: 如果您没有 ImageMagick 访问权限,您应该可以使用以下步骤的组合来调整动画 gif 的大小(假设您有 GD 访问权限):
- 检测图片是否为 gif 动画:Can I detect animated gifs using php and gd? (最佳答案)
- 将动画 gif 分割成单独的帧:http://www.phpclasses.org/package/3234-PHP-Split-GIF-animations-into-multiple-images.html
- 调整各个帧的大小:http://www.akemapa.com/2008/07/10/php-gd-resize-transparent-image-png-gif/
- 再次将帧重新合成为动画 gif:http://www.phpclasses.org/package/3163-PHP-Generate-GIF-animations-from-a-set-of-GIF-images.html
这绝对比 ImageMagick 路线密集得多,但在技术上应该是可行的。
如果你成功了,请与全世界分享!
关于php - 在不破坏动画的情况下调整动画 GIF 文件的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/718491/