アニメーションGIFから全フレームを取り出す

アニメーションGIFから静止画を1枚取り出したい——サムネイル・編集・資料用に。正しくPNGへ分割する方法です。

このガイドで使う道具

やりたいこと

アニメーションGIFのフレームは差分で保存されています。多くのフレームは変化した画素だけを描画します。素朴な取り出しでは部分的な画素の亡霊が出て、見えていた絵にはなりません。正しい分割はプレイヤーと同じように各フレームを合成します。

分割方法

GIFをドロップして実行します。デコーダは各フレームのdisposal処理を適用します(背景復帰と保持。前フレーム復帰は保持として処理)。出力PNGはすべて完全な合成画像になります。あとは個別またはZIPで取得します。

具体例

UIの手順GIFが4秒で24フレームをループします。分割すると画面サイズのframe-001.png〜frame-024.pngが出て、8と16が資料ページに欲しい2画面です。残りは参照用にZIPに残ります。

対応範囲

厳密な解析で、破損・途切れGIFは拒否し部分出力しません。25MiB・300フレーム・各辺4096px・展開データ256MBまで。巨大キャンバス×多フレームはメモリを食い尽くす前に拒否します。PNG出力は先頭20フレームまたは合計128MiBまで。小さい論理画面とオフセットフレームのGIFは、その全体キャンバスに合成するのが正しい描画です。