我有一张上传PHP脚本的图片,可以很好地处理png,jpg和jpeg图像。问题是,由于我使用imagealphablending
,imagesavealpha
,imagecreatetruecolor
和imagecopyresampled
的组合来调整图片大小,因此gif动画会丢失。我正在使用imagecreatefromgif
将gif加载到内存中。
我知道可以使用ImageMagick来实现所需的结果,但我想知道是否有一个标准php函数组合的解决方案来调整gif的大小而不会丢失动画。我有这样的解决方案,还是应该开始使用库?
答案 0 :(得分:1)
可以使用GD(你称之为"标准PHP")来调整动画GIF的大小。
您需要将图像分割为单独的帧,调整它们的大小,然后将所有内容重新组合在一起。
您可以看到更详细的解释here。
但是,我建议您使用imagick,因为它易于安装,并且更容易用于此类高级任务。
编辑这是我上面链接的答案的相关部分:
如果您没有ImageMagick访问权限,则应该可以使用 以下步骤的组合来调整动画gif的大小(假设 你有GD访问权限):
- 检测图片是否为动画gif:https://stackoverflow.com/questions/280658/can-i-detect-animated-gifs-using-php-and-gd (回答)
- 将动画gif拆分为单独的框架:[http://www.phpclasses.org/package/3234-PHP-Split-GIF-animations-into-multiple-images.html][2]
- 调整各个框架的大小:[http://www.akemapa.com/2008/07/10/php-gd-resize-transparent-image-png-gif/][3]
- 再次将帧重新组合成动画gif:[http://www.phpclasses.org/package/3163-PHP-Generate-GIF-animations-from-a-set-of-GIF-images.html][4]
醇>