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

如何使用标准php函数调整gif大小而不丢失动画,php,imagemagick,gif,animated-gif,Php,Imagemagick,Gif,Animated Gif,我有一个图片上传PHP脚本,可以很好地处理png、jpg和jpeg图像。问题是,由于我正在使用imagealphabling、imagesavealpha、imagecreatetruecolor和imagecopyresampled组合来调整图片大小,gif动画将丢失。我正在使用imagecreatefromformgif将gif加载到内存中 我知道可以使用它来实现所需的结果,但我想知道是否有一种解决方案,可以使用标准php函数组合来调整gif大小,而不会丢失动画。我有这样的解决方案,还是应该

我有一个图片上传PHP脚本,可以很好地处理png、jpg和jpeg图像。问题是,由于我正在使用
imagealphabling
imagesavealpha
imagecreatetruecolor
imagecopyresampled
组合来调整图片大小,gif动画将丢失。我正在使用
imagecreatefromformgif
将gif加载到内存中


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

可以使用GD(您称之为“标准PHP”)调整动画GIF的大小

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

您可以看到更详细的解释

然而,我真的建议您使用imagick,因为它易于安装,并且更易于用于像这样的高级任务

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

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

  • 检测图像是否为动画gif: (顶部答案)
  • 将动画gif拆分为各个帧:[
  • 调整各个框架的大小:[
  • 再次将帧重新组合为动画gif:[

  • 您必须将gif分解为其
    x
    图像,然后摆弄每个单独的图像,然后将新图像放回动画gif,这是使用GD不可能的。谢谢。如果您将此作为答案添加并解释一下,我肯定会接受您的答案。不过,我会等待一点其他答案。可能是其他答案e知道一些我们都不知道的事情。imagemagick是用什么实现的?如果是php,那是可能的。当然,如果我们从头开始实现图像处理,我们应该能够解决这个问题,但是从管理的角度来看,如果是这样的话,最好使用一个库。@LajosArpad imagemagick,很像imagick和php解释器r是用C写的。感谢您提供有关imagick和imagemagick的信息。