ActionScript3 PngEncoderクラス,JPEGEncoderクラス を用いてステージデータ画像化
せっかくActionScript3を勉強するならば、ActionScript3でのみできることを行うべきだ、というわけで、ActionScript2まででは結構大変だった swf画面の画像化を実装。
海外で公開されている、PngEncoderクラス または JPEGEncoderクラス を用いて実現します。
■サンプル
※要FlashPlayer9
ChangeImageボタンをクリックすると、その時点の画面表示を画像化します。画面が切り替わるので、ブラウザの戻るでお戻りください。
■PngEncoderクラス,JPEGEncoderクラスのソースはこちら
KAOURANTIN.NET
PngEncoderクラス
JPEGEncoderクラス
公開されている PngEncoderクラスと JPEGEncoderクラス 両方ともに少し古く、少し変更しなくては動かないので注意が必要です。
・package の util を utils に変更
・変数重複宣言箇所が多く 警告が嫌ならば全て重複しないような変数名へ修正
・JPEGEncoder.as内にある BitStringクラスは別ファイルに移動しないとパブリッシュが通らない?
→ BitString.as ファイルを作成し、そこにBitStringクラスを書く
・PNGEnc.as内の shrメソッドを呼び出している箇所は そのようなメソッドはないので以下のように変更
//uint(((p&0xFFFFFF) << 8)|(shr(p,24)))); uint(((p&0xFFFFFF) << 8) | ((p >>> 24))));
全体的な大まかな処理内容としましては、ステージ上の表示をdrawした BitmapDataインスタンス を PngEncoderクラス,JPEGEncoderクラスを用いて ByteArrayインスタンスへ変換し、そのデータをCGIへ送信して画像表示を行います。
よくわからなかった点は、ByteArrayインスタンスの情報をどのようにCGIへ送信したらいいかという点と、送信されたデータをCGIでどのように受信したらいいか、いう点でした。しかしネットの情報を書き漁り、なんとか動くものができました。
まず ByteArrayインスタンスの情報は、URLReuestインスタンスのdataプロパティへ直に設定します。送信されたデータをCGIから受信する方法は以下のサンプルを参考ください。
ActionScript3はいろんなことができるんですね!
ボタンをクリックすると、画像ファイル(pngなど)をダウンロードできるようにしてみたいのですが・・・
そういうこともできるのでしょうか・・・?
投稿者 j : 2007年02月10日 17:31