imagemagickを使ったgifアニメーション作成
処理画像を作成した後、それをアニメーション化したい時があるかと思います。その時に、私はimagemagickを使ってアニメーションを作成します。その際ファイルサイズの関係から、解像度を落としたり、最適化して圧縮したりなどすることがあります。今回はそれらを調べた結果についてまとめたいと思います。
GIFアニメーションの作り方
convertコマンドを使います。使いかたは下記の通りです[1]。
convert -delay 5 -loop 0 frame_*.png movie.gif
delayの後の数字は、フレーム間の遅延(時間間隔)を、loopの後の数値はループ再生のあり(1を指定)/なし(0を指定、例はこのパターン)を表します。ファイル名のしては、ワイルドカードが使えます。
GIFアニメーションのリサイズ
同じくconvertを使います。使用するオプションは、%で表現したい場合はscale、解像度で直接指定する場合はresizeを使います。具体的には、
convert source.gif -coalesce -scale 50% -deconstruct output.gif
や
convert source.gif -coalesce -resize 250x250 -deconstruct output.gif
を使います[2]。
・GIFアニメーションの最適化
convertとoptimizeオプションを使います[3]。最適化の中身については、[4]が詳しいと思います。
convert in.gif -coalesce -resize 幅x高さ -layers optimize out.gif
ただ個人的には、optimizeしてもファイルサイズは大して減らない印象があります。最適化よりもリサイズの方が圧倒的にオススメです。