- 2009年5月23日 02:46
- flash
JPGEncoder & PNGEncoder を非同期に改変。
といってもまあ、フレームに処理を分散させただけではありますが。
今までだと、大きなサイズの画像をエンコードしようとしたとき
CPUを占有してしまってPCが固まったような状態になってしまっていたので、
それの打開策として非同期版を作成。
規約に沿えば改変の有無に関わらず公開しても大丈夫ということだったので、
一応公開しておくことにします。もし何か不具合が起きても(ry
[class file: JPGEncoderAsync.as ]
具体的なスクリプトとしては、以下のような書き方になります。
import com.adobe.images.JPGEncoderAsync;
var je :JPGEncoderAsync = new JPGEncoderAsync( 50 );
je.addEventListener( JPGEncoderAsync.PROGRESS, onProgress );
je.addEventListener( JPGEncoderAsync.COMPLETE, onComplete );
// fps30としてBitmapDataをエンコード
je.encode( BitmapData, 30 );
function onProgress ( evt :Event ) :void
{
// エンコード済み/トータル
trace( evt.target.encoded / ect.target.total );
}
function onComplete ( evt :Event ) :void
{
// バイナリデータ取得
var ba :ByteArray = evt.target.image;
}
[class file: PNGEncoderAsync.as ]
PNG版もおんなじ要領で。
import com.adobe.images.PNGEncoderAsync; var pe :PNGEncoderAsync= new PNGEncoderAsync(); pe.addEventListener( PNGEncoderAsync.PROGRESS, onProgress ); pe.addEventListener( PNGEncoderAsync.COMPLETE, onComplete ); pe.encode( BitmapData, 30 ); (※以下JPG版と同様のため略)
- Newer: Bonsajo Motion Reel 2009
- Older: ActionScript3.0 memo