如何使用标准的php函数调整gif大小而不会丢失动画

时间:2015-06-21 18:33:16

标签: php imagemagick gif animated-gif

我有一张上传PHP脚本的图片,可以很好地处理png,jpg和jpeg图像。问题是,由于我使用imagealphablendingimagesavealphaimagecreatetruecolorimagecopyresampled的组合来调整图片大小,因此gif动画会丢失。我正在使用imagecreatefromgif将gif加载到内存中。

我知道可以使用ImageMagick来实现所需的结果,但我想知道是否有一个标准php函数组合的解决方案来调整gif的大小而不会丢失动画。我有这样的解决方案,还是应该开始使用库?

1 个答案:

答案 0 :(得分:1)

可以使用GD(你称之为"标准PHP")来调整动画GIF的大小。

您需要将图像分割为单独的帧,调整它们的大小,然后将所有内容重新组合在一起。

您可以看到更详细的解释here

但是,我建议您使用imagick,因为它易于安装,并且更容易用于此类高级任务。

编辑这是我上面链接的答案的相关部分:

  

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

     
      
  1. 检测图片是否为动画gif:https://stackoverflow.com/questions/280658/can-i-detect-animated-gifs-using-php-and-gd   (回答)
  2.   
  3. 将动画gif拆分为单独的框架:[http://www.phpclasses.org/package/3234-PHP-Split-GIF-animations-into-multiple-images.html][2]
  4.   
  5. 调整各个框架的大小:[http://www.akemapa.com/2008/07/10/php-gd-resize-transparent-image-png-gif/][3]
  6.   
  7. 再次将帧重新组合成动画gif:[http://www.phpclasses.org/package/3163-PHP-Generate-GIF-animations-from-a-set-of-GIF-images.html][4]
  8.