如何将PNG条带转换为GIF?
所以,我在一个程序中制作了这个动画,然而,它似乎不支持导出为PNG序列,所以我可以将它转换为GIF。 动画超过100帧,因此逐个保存每个图像需要很长时间。 但是,它支持导出为“条带”,就像电影胶片一样。 动画中的每张图片都具有相同的尺寸。 这是程序的“条带”function的工作原理。
动画中的图像水平堆叠,第一帧是最左边,而最后一帧是最右边。 帧之间没有间隙,如果动画有X帧,文件名通常是“name_stripX.png”。 如果每帧是32乘32并且动画有8帧,则此文件的宽度为256,高度为32。
这是一些示例输出,每个颜色填充一帧:
此外,为了更清楚一点,该程序被称为“Game Maker 8.0”。
您可以使用ImageMagick以不同的方式转换图像,它应该能够很容易地实现。 首先,你可以分成几个部分( original.png
是源图像,在这种情况下是32×32像素):
convert original.png -crop 32x32 parts-%02d.png
然后,您可以将其转换为动画(如果您不希望循环,请使用-loop 1
):
convert -loop 0 -page +0+0 ./parts*.png output.gif
导致:
第一个命令的输出PNG包含一个偏移量,因此如果没有-page +0+0
选项,动画最终会像:
您可以包含不同的其他选项(主要在第二个命令中),例如-delay
等 – 您还可以优化动画 ,使其更小(加载/渲染速度更快) – 例如从这里 借用 :
convert output.gif -fuzz 10% -layers Optimize optimised.gif
或使用gifsicle
gifsicle -O output.gif -o optimised.gif
编辑:如果框架是透明的,您可以通过添加框架来设置要替换的框架
-dispose Background
选项,因此当下一个框架被加载时丢弃一个框架:
上面的例子没有page
选项,所以它清楚地显示
这个问题是你可能无法对结果图像进行大量优化 – 所以另一种方法可能是使帧不透明,以便下一帧覆盖前一帧。