みずー工房

気ままライフを綴るブログです

【Python】PillowでAPNGを作る

PythonモジュールのPillow(PIL)で、APNG(アニメーションPNG)を作ってみましょう。
おおよその指定の仕方は、アニメGIFを作る方法と一緒です。
アニメGIFと対して違いがないのに、なんでネット上にあまり記事がないんだろ...


APNGには、Pillowの7.1から完全に対応したようです(最新版は執筆現在で8.1)。
アニメGIFと同じように設定し、拡張子を”png”にするだけ で出力が可能です。

imgs = [] # Pillow形式で保存された画像の配列

imgs[0].save("result.png",  # 保存名の拡張子をpngにする
    save_all=True,          # 全ての画像を保存
    append_images=imgs[1:], # imgsの1番以降の画像を保存
    optimize=False,         # 最適化処理は実行しません
    duration=1000//30,      # 切り替えタイミングをミリ秒で設定。この場合は30fps 
    loop=0                  # ループの回数を設定。0なら無限ループ
)


こんな感じでAPNGが保存されました。
容量はちょっと重いですけど、透過も色彩もGIFより全然きれいです。