AS3, 画面をキャプチャして画像生成(JPG,PNG)

Actionscript3, corelib

AS3のflash.utils.ByteArrayを使いこなせるようになりたいとテストしています。

Adobe - Developer Center 2008-09-28の記事 Saving Flash graphics as image files at runtimeにソースファイル付きでサンプルがあったのでありがたく試してみる。
サンプルは入力したテキストごとMovieClipをキャプチャした後、JPGかPNGに変換して、サーバーのPHPにデータを送り
・再度読み込む
・ダウンロードする
・ブラウザの別ウインドウに表示する
が行えるようになっている。

サーバー側のPHPは単にデータを返すだけで、これで画像を生成していない。
画像生成処理まですべてFlash側でできることがスゴイ。
Diretorだとサードパーティーのextraを使わないといけないところ・・・

ByteArrayの他に以下のライブラリを使う。
Adobeの corelib
dynamicflash.comcom.dynamicflash.util.Base64

ActionScript 3.0 Base64 encoder/decoder にも少し解説が。
Base64作者のSteve WebsterさんはYahoo UKのWeb DeveloperでFoundation ActionScript 3.0 with Flash CS3 and Flex 著書の一人。

【手順】

  1. キャプチャしたい矩形をgetBoundsで取得
  2. 矩形サイズのBitmapDataをつくりキャプチャ元を複製
  3. corelibの JPGEncoder, PNGEncoder でByteArrayへエンコード
  4. ByteArrayをBase64でString型へ
  5. サーバーへPOST送信

サンプルソースのSnapshot.as
options.loader.load(request);

var ldr:Loader = new Loader();
ldr.load(request);
options.loader.removeChildAt(0);
options.loader.addChild(ldr);

へ修正。

FlashでJPG,PNG生成

AIRならサーバーなしで単体でできそう。。

Actionscript3, corelib

コメントをどうぞ

WP Theme & Icons by N.Design Studio
RSS