ActionScript で描画内容を JPEG ファイルとして保存するコード

Adobe が公開している as3corelib ライブラリ を使うと、JPEG ファイルがカンタンに作れて、
FLash 10 の FileReference の save() メソッド を使うと、ローカルのファイルを作成できる。

例えば、画面の描画内容をそのままキャプチャして、JPEG ファイルとしてローカルに保存するコードは以下:

package {
  import flash.display.BitmapData;
  import flash.display.Sprite;
  import flash.events.Event;
  import flash.events.MouseEvent;
  import flash.net.FileReference;
  import flash.utils.ByteArray;
  import com.adobe.images.JPGEncoder;
  
  public class Main extends Sprite {
    private var fileRef:FileReference;
    
    public function Main():void {
      graphics.beginFill(0xff0000);
      graphics.drawCircle(320, 240, 160);
      graphics.endFill();
      stage.addEventListener(MouseEvent.CLICK, onClick);
    }
    
    private function onClick(e:Event):void {
      var bmd:BitmapData = new BitmapData(loaderInfo.width, loaderInfo.height);
      bmd.draw(stage);
      var jpgenc:JPGEncoder = new JPGEncoder(90);
      var data:ByteArray = jpgenc.encode(bmd);
      fileRef = new FileReference();
      fileRef.addEventListener(Event.COMPLETE, onComplete);
      fileRef.save(data, 'sample.jpg' );
    }
    
    private function onComplete(e:Event):void {
      // done
    }
  }
}


ステージをクリックすると、ステージの内容をそのまま保存する。
load より save の方が簡単だな。
 
Trick7 先生いつもありがとうございます。



(追記)
640×480ピクセルの JPEG エンコーディングは、手元の環境で 2.5 秒くらい、
320×240ピクセルでも、0.8 秒くらいかかりました。あれ、結構、遅いっすね…。

ブログ気持玉

クリックして気持ちを伝えよう!

ログインしてクリックすれば、自分のブログへのリンクが付きます。

→ログインへ

なるほど(納得、参考になった、ヘー)
驚いた
面白い
ナイス
ガッツ(がんばれ!)
かわいい

気持玉数 : 14

なるほど(納得、参考になった、ヘー) なるほど(納得、参考になった、ヘー) なるほど(納得、参考になった、ヘー) なるほど(納得、参考になった、ヘー)
驚いた
面白い 面白い
ナイス ナイス ナイス ナイス
かわいい かわいい かわいい

この記事へのコメント

この記事へのトラックバック