[備忘録]
PILにて透過画像からGIFを作成することが可能です。
その時に、何も設定をしないと、透過されているところが黒くなってしまいます。
その対策のために、マスクをかけます。
image = Image.new('test.png')
alpha = image.split()[3]
image = image.convert('RGB').convert('P', palette=Image.ADAPTIVE, colors=255)
mask = Image.eval(alpha, lambda a: 255 if a <= 128 else 0)
image.paste(255, mask=mask)
これらの画像から生成すると、画像が更新されると後ろに前の画像が表示されます。
対策としては、gifとして保存する時に、disposal=2にすることで対策が可能です。
image.save('new.gif', save_all=True, append_images=images, duration=100, loop=0, transparency=255, disposal=2)