サーバを経由せずに Flash の内容を画像に変換する

February 21, 2008category: Flash JavaScript 

Flash で描画したベクター画像を img タグで表示させるデモを作った。肝はサーバプログラムを経由しないところ。 IE 以外のモダンブラウザなら、下の灰色の領域に線を描くと、その下に PNG 画像が現れるはず。

ペイントツール部分は、func09 さんのソースをお借りした。

仕組み

  1. PNGEncoder で PNG の ByteArray を作る
  2. その ByteArray を Base64 エンコードする
  3. その文字列を ExternalInterface でブラウザに送る
  4. data スキーマで画像を表示させる
var bmp:BitmapData = new BitmapData(300, 300);
bmp.draw(canvas);
var base64Text:String = Base64.encodeByteArray(PNGEncoder.encode(bmp));
ExternalInterface.call("putImage", base64Text);

comments (3)

comments

IEではどうやれば、これと同じことできますか?

Posted by: 通りすがり : April 7, 2008 05:33 PM

通りすがりさんこんにちは。

IE6/7 では data スキーマ (ムの方が正しいかも) に非対応なので、これと同じことはできません。

ただし、IE8 では対応とのこと※なので、近い将来、同じコードが動くと思います。

※手元に IE8 が無いので、ソースは Wikipedia をご参照ください。
"Internet Explorer up to version 7 does not support data: URIs. However, it is supported by Internet Explorer 8 Beta 1"
http://en.wikipedia.org/wiki/Data:_URI_scheme

Posted by: Tanabe : April 8, 2008 12:27 AM

丁寧にありがとうございます。
現状はIE8期待といったところでしょうか。

Posted by: 通りすがり : April 11, 2008 06:13 PM