如何阻止枕头将黑框插入动画gif

时间:2018-10-30 23:17:15

标签: python python-imaging-library

我正在开发一个程序,该程序需要使用动画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()

1 个答案:

答案 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的工作原理。