我正在开发一个程序,该程序需要使用动画gif并以不同的动画gif格式返回gif的文本版本。 例子
asciify(foo.gif)
bar.gif has been created
创建gif并将其打开后,动画开始时总会有一个黑框,这使得观看循环很烦人。
我尝试将创建的gif的alpha通道设置为0,仅将ascii_image_gifs[1,-1]
附加到输出的gif上,我的想法已经用完了。
演示:
原始gif: trippy circles
输出gif: trippy ascii circles elongated
编辑:我刚刚取得了突破!罪魁祸首是gifify()
中的这一行:
如果我将其更改为save_as = Image.new('RGBA', (self._nw*3, self._nh*8), (0, 0, 0, 0))
黑框变成白色,所以我的问题变成:保存/创建输出图像时,如何忽略save_as = Image.new('RGBA', (self._nw*3, self._nh*8), 'white')
创建的图像?
下面是程序,相关功能是Image.new()
gifify()
答案 0 :(得分:2)
感觉就像这个参数append_images = ascii_image_gifs会将图像列表附加到现有的全黑图像上。
您是100%正确的
正在呼叫image.save("test.gif", append_images=images)
。然后image
是第一帧,images
是所有额外/附加帧的列表。
因此,相反,请使用images[0]
作为第一帧,并附加其余帧(images[1:]
)。
在您的代码中save_as
是造成黑框的原因。因此,请将其删除,仅使用ascii_image_gifs
。
ascii_image_gifs[0].save('temp.gif', save_all=True, append_images=ascii_image_gifs[1:], loop=0, fps=24)
可能有点令人费解,但这就是PIL的工作原理。