gggggraziegrazie

graizegrazieさんのやったこと、学んだことを記録する雑記帳です

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してもファイルサイズは大して減らない印象があります。最適化よりもリサイズの方が圧倒的にオススメです。