将 png 转换为 gif 时出现透明度问题

将 png 转换为 gif 时出现透明度问题

我正在使用 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.

默认情况下,我相信它选择“未定义”,相当于“无”,这意味着它不会处理前一帧。

相关内容