Python枕头透明gif无法正常工作

时间:2020-03-31 10:06:31

标签: python python-imaging-library gif animated-gif

我正在尝试旋转以下图标的gif:

Icon

为了实现这一目标,我使用Pillow库在Python中运行以下代码:

from PIL import Image, ImageDraw

images = []

icon = Image.open("cameraIcon.png")

for i in range(0, 360):
    images.append(icon.rotate(i))

images[0].save('loadingIcon.gif', format='GIF', save_all=True, append_images=images[1:], duration=40, loop=0, transparency=0)

但是此代码的输出与我想要的不匹配,我得到以下gif:

enter image description here

我不知道发生了什么,感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

我在使用PIL时也遇到了麻烦,因此这是一个 ImageMagick 解决方案,可让您在工作时继续前进...

truncate()

enter image description here

答案 1 :(得分:0)

这里有两个主要问题。

  1. 您尚未指定disposal的{​​{1}}参数。此参数控制相对于背景如何放置前一帧。如果未指定,则前一帧“徘徊”到下一帧。添加Image.save()应该可以解决该特定问题。
  2. 第二,截至撰写本文时,枕头库长期存在影响透明度的问题。其中,在很多情况下,它会导致透明区域被黑色像素替换。枕头Github存储库的issue 4640中描述了该问题。一个用户在相关的issue 4644中提供了一种解决方法。只要您不需要支持部分Alpha透明度,此解决方法就可以正常工作。我发现它会使Alpha变平并且在那种情况下不起作用。

这里是我使用的代码(改编于4644期的代码),以防有所帮助。您只需使用图像和持续时间调用disposal=2函数即可。

save_transparent_gif