GIFアニメ生成にImageMagickはオワコン、情強は高速なGraphicsMagickを使う

f:id:uiureo:20130519030836g:plain

大した話ではないけれど、GIFアニメをコマンドラインから作るならGraphicsMagickが便利なので共有します。

MP4の動画ファイルからGIFアニメを作ろうとすると、まずffmpegで動画を画像に分割してそれからimagemagickでGIFに結合するという方法があります。

% ffmpeg -i hoge.mp4 -r 2 %04d.png
% convert *.png hoge.gif

複数枚の画像をimagemagickでGIFに結合するのが実は結構時間がかかるため煩わしいことが多いです。場合によっては、数十秒かかったりする。

ImageMagickのfork版であるGraphicsMagickを使うと高速にGIFアニメを生成することができます。

GraphicsMagickのほうが3~4倍速い

GraphicsMagickを使えばImageMagickよりも3~4倍高速にGIF生成ができます。生成されるGIFの容量もGraphicsMagickのほうが若干小さい。

我々人類にとって貴重な遺産である愛生会病院のホームページを10秒程度撮った動画をGIFに変換して試してみました。動画から一秒2フレームずつ画像をpngで切り出したものをGIFに結合してベンチマークをとりました。

f:id:uiureo:20130519130719g:plain

png20枚(一枚500KB程度)をGIFに結合するのにImageMagick45.87秒かかったのに対し、GraphicsMagickは10.45秒しかかかりませんでした。生成されたGIFの容量もImageMagick4.5MBだったのに対し、GraphicsMagickは4.2MB300KBほど小さかった。

GIF生成にかかる時間はフレーム数にほぼ比例して長くなるため、大きなGIFファイルを作ろうとすると速度の違いはさらに顕著になります。

GIFアニメを作るときは大量のパターンを試すことが多いため、速いほうが製作効率が上がります。

コマンドもImageMagickとほとんど同じです。

% gm convert *.png hoge.gif

homebrewから簡単にインストールできる。

% brew install graphicsmagick

ときどきImageMagickにあるオプションがなかったりするものの、GIFアニメ用途ではGraphicsMagickが便利。