如何使用Imagemagick制作高质量动画图像

31

我想从这些.png图片制作一个动画gif:

输入图像描述输入图像描述输入图像描述输入图像描述

我用这个命令完成的:

convert -layers OptimizePlus -delay 25x100 ps1-*.png -loop 0 ps1.gif

它成功地制作了一个动画gif,然而输出的质量很低而且比输入的图像小:

enter image description here

经过一些搜索,我找到了-quality选项。

convert -layers OptimizePlus -delay 25x100 -quality 99 ps1-*.png -loop 0 ps1.gif

但是似乎imagemagick忽略了该参数。

1个回答

46

问题是你的源PNG图片具有GIF不支持的alpha通道。因此,您必须先从源图像中移除透明度。由于您正在处理多个源图像,因此无法使用-flatten方法。对于较新的ImageMagick版本,以下内容应该可以正常运行:

convert -background white -alpha remove -layers OptimizePlus -delay 25x100 ps1-*.png -loop 0 ps1.gif
如果您使用的ImageMagick版本低于6.7.5,您可以尝试:
convert -bordercolor white -border 0 -layers OptimizePlus -delay 25x100 ps1-*.png -loop 0 ps1.gif

我用后面的指令得到了以下结果:

animation


1
GIF支持透明度。问题中发布的GIF是透明的。 - Hai Zhang
@DreaminginCode 但是GIF仅支持完全透明的像素和没有alpha通道,这就是为什么你会得到锯齿状边缘的原因。 - nwellnhof
但是仍然有很多透明的GIF,人们通常采用的方法是只在白色背景上放置半透明像素,这样在大多数情况下边缘看起来不会出现锯齿。Photoshop在导出GIF时有一个边框选项,但我还没有找到imagemagick的好方法。 - Hai Zhang

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接