Flexの高速PNGエンコーダーを求めて - Blooddy氏のPNG24Encoder(たぶんAlchemy非使用)
FlexでPNGをエンコードするとなれば、普通は標準APIのmx.graphics.codec.PNGEncoderを使うことになるだろう。しかし、JPEGの場合と同様、まだ十分に速いとは言えない。そこでより高速なエンコーダーを探すことになる。
琴線探査: Flexの高速JPEGエンコーダーを求めて - metalbot氏のアレ(Alchemy利用)
まず行き着いたのが、Spark Projectにコミットされているjp.ferv.blog氏の「PNG クラス」だ。こちらのライブラリもAlchemyを利用しているらしい。
dsk/PNG - Spark project
実際に利用してみると、ご本人もおっしゃるっているように、残念ながらAlchemyを利用することで期待するスピードは出ていないようだった。
jp.ferv.blog >> Blog Archive >> Alchemy PNG encoder を Spark
自分の環境でテストするとこんな感じだった。
mx.graphics.codec.PNGEncoder
480x854, 890.18KB, 1.18sec
1600x1200, 4,072.90KB, 5.15sec
jp.ferv.fileformats.png.PNG
480x854, 759.36KB, 1.01sec
1600x1200, 3,220.01KB, 4.25sec
標準のAPIに比べて20%程度高速で、特に非同期エンコードもできるというメリットは見逃せない。
さらにjp.ferv.blog氏のブログを拝見していると、このような記事が。
jp.ferv.blog >> Blog Archive >> 最速 PNGEncoder を教えてもらったよ
この記事には各種PNGEncoderの速度比較をしている記事へのリンクがある。それはこちらだ。
Quick tip: Fastest ActionScript PNGEncoder at Jozef Chúťka's blog
結論としてはBlooddy氏のPNG24Encoder圧倒的に速いということが書かれている。
ということで、Blooddy氏のサイトからライブラリをダウンロードさせて頂いた。MITライセンスで提供されている!ありがたや。Blooddy氏はどうやらロシアの方らしい。
BlooDHoun's workspace
ダウンロードしたアーカイブにはMITライセンスのテキストとSWCのみが入っていて、使い方がまったくわからない(^^);
しかし、Blooddy氏のお友達らしい方のポストにこのライブラリのテストコードがあったので大体のことはわかった。PNGのエンコーダーだけでなく、JPEGやMD5のエンコーダーも含まれているようだ。
100x times faster MD5 and more >> Valentin Simonov's Flash Blog
自分の環境でテストするとこんな感じだった。
mx.graphics.codec.PNGEncoder
480x854, 890.18KB, 1.18sec
1600x1200, 4,072.90KB, 5.15sec
jp.ferv.fileformats.png.PNG
480x854, 759.36KB, 1.01sec
1600x1200, 3,220.01KB, 4.25sec
by.blooddy.crypto.image.PNG24Encoder
480x854 890.23KB, 0.43sec
1600x1200, 4,072.95KB 1.68sec
確かに速い!爆速だ。標準のPNGEncoderの3倍近く高速だ。非同期エンコードのインターフェースは見当たらなかったけれど、これだけ速ければ非同期の必要性は感じないかもしれない。
Alchemyを利用しているのかどうかはわからないけれど、SWCのファイルサイズがわずか16KBであることを考えると、恐らくAlchemyは利用していないのではないかと思われる。
しかし、たった16KBでこれだけのことができるとは!すばらしい。Thanks, Blooddy!
琴線探査: Flexの高速JPEGエンコーダーを求めて - metalbot氏のアレ(Alchemy利用)
まず行き着いたのが、Spark Projectにコミットされているjp.ferv.blog氏の「PNG クラス」だ。こちらのライブラリもAlchemyを利用しているらしい。
dsk/PNG - Spark project
実際に利用してみると、ご本人もおっしゃるっているように、残念ながらAlchemyを利用することで期待するスピードは出ていないようだった。
jp.ferv.blog >> Blog Archive >> Alchemy PNG encoder を Spark
自分の環境でテストするとこんな感じだった。
mx.graphics.codec.PNGEncoder
480x854, 890.18KB, 1.18sec
1600x1200, 4,072.90KB, 5.15sec
jp.ferv.fileformats.png.PNG
480x854, 759.36KB, 1.01sec
1600x1200, 3,220.01KB, 4.25sec
標準のAPIに比べて20%程度高速で、特に非同期エンコードもできるというメリットは見逃せない。
さらにjp.ferv.blog氏のブログを拝見していると、このような記事が。
jp.ferv.blog >> Blog Archive >> 最速 PNGEncoder を教えてもらったよ
この記事には各種PNGEncoderの速度比較をしている記事へのリンクがある。それはこちらだ。
Quick tip: Fastest ActionScript PNGEncoder at Jozef Chúťka's blog
結論としてはBlooddy氏のPNG24Encoder圧倒的に速いということが書かれている。
ということで、Blooddy氏のサイトからライブラリをダウンロードさせて頂いた。MITライセンスで提供されている!ありがたや。Blooddy氏はどうやらロシアの方らしい。
BlooDHoun's workspace
ダウンロードしたアーカイブにはMITライセンスのテキストとSWCのみが入っていて、使い方がまったくわからない(^^);
しかし、Blooddy氏のお友達らしい方のポストにこのライブラリのテストコードがあったので大体のことはわかった。PNGのエンコーダーだけでなく、JPEGやMD5のエンコーダーも含まれているようだ。
100x times faster MD5 and more >> Valentin Simonov's Flash Blog
自分の環境でテストするとこんな感じだった。
mx.graphics.codec.PNGEncoder
480x854, 890.18KB, 1.18sec
1600x1200, 4,072.90KB, 5.15sec
jp.ferv.fileformats.png.PNG
480x854, 759.36KB, 1.01sec
1600x1200, 3,220.01KB, 4.25sec
by.blooddy.crypto.image.PNG24Encoder
480x854 890.23KB, 0.43sec
1600x1200, 4,072.95KB 1.68sec
確かに速い!爆速だ。標準のPNGEncoderの3倍近く高速だ。非同期エンコードのインターフェースは見当たらなかったけれど、これだけ速ければ非同期の必要性は感じないかもしれない。
Alchemyを利用しているのかどうかはわからないけれど、SWCのファイルサイズがわずか16KBであることを考えると、恐らくAlchemyは利用していないのではないかと思われる。
しかし、たった16KBでこれだけのことができるとは!すばらしい。Thanks, Blooddy!
16KBとはスゴイですねぇ。世の中には凄い方々がいらっしゃいます。
返信削除