Stats of the Rivers

川の様子を見に行ってます。

文化の日なので cURL で GIF アニメ作るやつを作った

文化の日でしたね。

それはさておき、あまり知られていないことのようですが、 Heroku のインスタンスはデフォルトで ImageMagick がインストールされています。 なので、適切なライブラリ (たとえば Ruby だったら RMagick など) を使うことで簡単に画像をいじることができます。

さて、ある環境で ImageMagick が動くということが分かった時、我々がやるべきことはもちろん、アニメーション GIF を作ることです。

コマンドラインにおいて ImageMagick を使って GIF アニメを作る方法は簡単で、 convert という ImageMagick が専有している非常に一般的な名前のコマンドを使って以下の方法で実現できます。

$ convert foo.jpg bar.png baz.gif output.gif

ImageMagickRuby バインディング (のデファクトスタンダード) である RMagick でも GIF アニメを作るのは同様に簡単です。

image_list = Magick::ImageList.new("foo.jpg", "bar.png", "baz.gif")
image_list.write("output.gif")

ということで、実際 GIF アニメを作ること自体は ImageMagick がある環境では比較的簡単なのですが、もっと簡単にできそうということで、 GIF アニメを作って返すだけのサービスを Heroku に置きました。

Yet Another Something Which Generates Animated GIFs

使い方は非常に簡単で、 files パラメータに元画像のファイルを配列として設定したリクエストを POST で送るだけで、GIF アニメが降ってきます。 便利ですね。*1

今はシンプルな GIF アニメしかできないですが、ご存知の通り ImageMagick には設定できる無数のパラメータがあるので、手の入れようはいっぱいあると思っています。

*1:好事家のみなさんのためにそんな大したものじゃないけど ソースコードも置いておきます。