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

标签 php image imagemagick animated-gif

我需要在不破坏动画的情况下调整动画 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 访问权限):

  1. 检测图片是否为 gif 动画:Can I detect animated gifs using php and gd? (最佳答案)
  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 路线密集得多,但在技术上应该是可行的。

如果你成功了,请与全世界分享!

关于php - 在不破坏动画的情况下调整动画 GIF 文件的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/718491/

相关文章:

php - 语法错误重定向到 'Server not found' 页面

javascript - 居中和裁剪 img 标签

ImageMagick 命令行将 PNG 转换为具有透明度的 EPS

ruby - 在 RMagick 中创建具有两种颜色的标题

ruby-on-rails - 缓存资源耗尽 Imagemagick

php - 当一个词是或不是它本身时用 str_replace 替换一个词

php - MySQL 查询可以通过工作台工作,但不能通过 mysqli

php - session 数据,在 CodeIgniter 中显示配置文件 URL(带 Tank Auth)

html - 影响其中 child 的CSS背景图像不透明度

html - 为什么我的网站背景图片的顶部和底部被截断(全屏图像背景)?