読者です 読者をやめる 読者になる 読者になる

JavaScriptでJPEGをエンコーディング

 AjaxianよりJavaScriptでJPEGエンコーディングを試してみた人がいましたJavaScript基本的インタプリタなのに関わらず、コンパイラであるActionScriptと比べてそれほど遅くない結果になっています。

 方法は

 高速化のためにWebWorkers(スレッドプログラミングができるHTML5API)による並列処理も試みたそうです
 WebWorkersはスレッドセーフのため、データの受け渡しは文字列のみに限られるので以下のような方法を試してみたとのこと。

  1. JSONエンコーディング→デコード
    • 非常に遅い
  2. 文字列をデリミタで結合→分割
    • JSONよりマシ。ただしやはり遅い
  3. 一バイトずつ文字列に変換→デコード
    • イマイチだけど、何とかマシに

 ベンチマーク結果からしますと、残念ながらどうもこのエンコード→デコードプロセスがボトルネックになっていて効果が上がらないみたいです。
 また、GoogleChromeはスレッドプログラミング版では落ちたみたいですが、原因はWebWorkerよりも画像のサイズにあるらしく、小さな画像では動作したとのことです。

 サンプルページも試してみましたが、動作はかなり軽快で「JavaScriptには巨大なデータを扱う能力が十分にある」という結論も納得できます。