我正在使用 imagemagick 的 convert 来获取一组 PNG 并将其转换为 GIF。我使用的命令是
convert -delay 10 -loop 0 *.png out.gif
我喜欢这个结果,因为视觉质量几乎没有下降,但我遇到的一个问题是当我的 PNG 有透明数据时:每一帧似乎不是一个单独的图片,而是在任何透明的地方都可以看到以前图像的数据。
例如,如果一个球从左向右滚动,并且背景是透明的,您将看到球所在的所有先前的帧。
我该如何处理这个问题?如果可能的话,我希望 GIF 保留透明度(否则,只需将其设为预定义的颜色),但我想要一个适当的动画。
答案1
查看 ImageMagick 的dispose
用于设置在绘制下一帧之前如何处理(或不处理)前一帧的选项。
图层处理方法定义了在动画的当前“帧”完成显示之后(在其“延迟”期之后),但在动画的下一帧叠加到显示器之前,对每个显示图像进行修改的方式。
Undefined 0 No disposal specified (equivalent to 'none').
None 1 Do not dispose, just overlay next frame image.
Background 2 Clear the frame area with the background color.
Previous 3 Clear to the image prior to this frames overlay.
默认情况下,我相信它选择“未定义”,相当于“无”,这意味着它不会处理前一帧。