2013年3月31日日曜日

ブラウザだけでアニGIFのエンコードができるJSライブラリはas3gifのJSポートだった

画像の一部にモザイクをかけてGIFアニメにする - 音の鳴るブログ


全部ブラウザでやっている。 CanvasからGIFアニメを作るライブラリ があって、試してみたら結構重かったので、インターフェイスはそのままでWebWorkerで処理するように改造したやつ を使っている。

ブラウザだけでアニGIFを作れるようになったんだなー、素晴らしいなーと思って、それを実現するライブラリがどんなものなのかをチェックしたらas3gif(GIFPlayer)のJSポートだった。

antimatter15/jsgif · GitHub

筆者の方は「処理が重い」とおっしゃっている。実際に試してみたところ、確かに重い(^^);

as3gifは前にAS3で使ったことがあるライブラリなのだけど、その処理の重さはAS3でも同じだった。

検証の結果、その処理の遅さの大きな原因は、減色アルゴリズムの org.bytearray.gif.encoder.NeuQuant.as にあると分かった。どうもNeuQuantは色の再現性は高いのだけど処理が重いようだった。

そこで、色の再現性は多少犠牲にして速度優先で・・・とmediancutやoctreeのアルゴリズムを試したらかなり速くなったことを覚えている。特にmediancutは単純なだけに高速で、色の再現性もそれほど悪くはなかった。

ブラウザだけでアニGIFのエンコードができるのは画期的だと思うので、そのうちmediancutをJSに移植してみたい。

やる気が出たら(^^);

数値計算部分に最近話題のasm.jsを使ったらさらに速くなるかも?

Firefox22が「asm.js」採用へ、JavaScriptがネイティブアプリに近い実行速度まで高速化 - GIGAZINE