swdyh

アニメーションgifを止める/アニメーションgifから任意のコマを取り出すWeb APIを作った

2012-07-19 16:42:00

urlパラメータにgifのurlを渡す

http://stopgif.herokuapp.com/?url=http%3A%2F%2Fupload.wikimedia.org%2Fwikipedia%2Fcommons%2F6%2F6a%2FSorting_quicksort_anim.gif

indexパラメータでコマを指定

http://stopgif.herokuapp.com/?url=http%3A%2F%2Fupload.wikimedia.org%2Fwikipedia%2Fcommons%2F6%2F6a%2FSorting_quicksort_anim.gif&index=20

altパラメータでエラー時に出す画像を指定(リダイレクト)

http://stopgif.herokuapp.com/?url=http%3A%2F%2Fupload.wikimedia.org%2Fwikipedia%2Fcommons%2F6%2F6a%2FSorting_quicksort_anim.gif&alt=http%3A%2F%2Fexample.com%2Fbar.gif

Rubyで書いていて、gifの処理はRMagick、Web API部分はsinatra、サーバはheroku ceder。とりあえず動く状態にした段階で遅いんだけど、open-uriの部分をEventMachineのにしたり、キャッシュをちゃんとすればもっと速くなると思う。

swdyh/stopgif GitHub https://github.com/swdyh/stopgif

HTMLのimgタグでアニメーションを禁止にできたら、自分の問題は解決なんだけど、そういうのはないんだろうか。jsgifを使ってなんとかするというのも解決方法のひとつだったと思うけど、外部の画像を処理するときにsame origin policyに引っかかって面倒そうだったのでやらなかった。