GIFアニメ生成にImageMagickはオワコン、情強は高速なGraphicsMagickを使う
大した話ではないけれど、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に結合してベンチマークをとりました。
png20枚(一枚500KB程度)をGIFに結合するのにImageMagickは45.87秒かかったのに対し、GraphicsMagickは10.45秒しかかかりませんでした。生成されたGIFの容量もImageMagickは4.5MBだったのに対し、GraphicsMagickは4.2MBで300KBほど小さかった。
GIF生成にかかる時間はフレーム数にほぼ比例して長くなるため、大きなGIFファイルを作ろうとすると速度の違いはさらに顕著になります。
GIFアニメを作るときは大量のパターンを試すことが多いため、速いほうが製作効率が上がります。
コマンドもImageMagickとほとんど同じです。
% gm convert *.png hoge.gif
homebrewから簡単にインストールできる。
% brew install graphicsmagick
ときどきImageMagickにあるオプションがなかったりするものの、GIFアニメ用途ではGraphicsMagickが便利。