forked from: 2009-3-14 wonderfl に任意の画像をBitmapにして埋め込む
Bitmapを返すようにしてみました。
// forked from hikipuro's 2009-3-14 wonderfl に任意の画像を埋め込む
// Bitmapを返すようにしてみました。
package
{
import flash.display.Bitmap;
import flash.display.DisplayObjectContainer;
import flash.display.Sprite;
import flash.events.Event;
import flash.display.BitmapData;
/**
* Base64 化された画像を wonderfl に埋め込むサンプル
*
* Base64 化すると、画像データは SWF に埋め込まれるので、
* Loader を使って外部サーバから画像を読み込むことなく
* wonderfl に画像データ (JPG, PNG, GIF, SWF) を
* 埋め込むことができます。
*
* - 2009-3-14 選んだファイルを Base64 エンコードする
* http://wonderfl.kayac.com/code/7759319c71a3b018008d108bfd08425cd72a5c77
*
*
* - PHP で ファイルを Base64 化するコードの例
* http://hikipuro.blog105.fc2.com/blog-entry-249.html
*
*
* 写真素材は、LittleHut さんからお借りしました。
* http://littlehut.fem.jp/
*/
[ SWF( width = "320" , height = "240" , backgroundColor = "0xFFFFFF" , frameRate = "60" ) ]
public class Main extends Sprite
{
// 画像データ
private const data:String = "iVBORw0KGgoAAAANSUhEUgAAAA8AAAAPCAMAAAAMCGV4AAADAFBMVEX////////////////////////////////////////////////////////////////3ewD7vQD/8gD///////////////////////////////////////////////////8AAAD///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+KZIpGAAAAR0lEQVR4nF1PURYAMARyhOr+h50xM+uHkhdmCdoEPsopQJhjlYHYkBSVMSuk5wq1coSOQPBOcM6HY1t9qYQ87p7osaP2a94tx7YGbhOcts0AAAAASUVORK5CYII="
/**
* コンストラクタ
*/
public function Main():void
{
if (stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
}
/**
* 初期化メソッド
* @param e
*/
private function init(e:Event = null):void
{
var bmp:Bitmap = new Bitmap();
var bmd:BitmapData = new BitmapData(100, 100, true, 0x000000);
removeEventListener(Event.ADDED_TO_STAGE, init);
// entry point
bmp = Base64ImageLoader.load(data);
addChild(bmp);
}
}
}
/**
* Base64化された画像データを表示可能な形式に変換するクラス
*
* 使い方 :
* var data:String = "Base64化された画像データ";
* var display:DisplayObjectContainer = Base64ImageLoader.load(data);
* if (display != null)
* addChild(display);
*/
class Base64ImageLoader
{
import flash.display.DisplayObjectContainer;
import flash.display.Loader;
import flash.utils.ByteArray;
import mx.utils.Base64Decoder;
import flash.events.Event;
import flash.display.Bitmap;
import flash.display.BitmapData;
static public function load(data:String):Bitmap
{
var byteArray:ByteArray;
var base64Decoder:Base64Decoder;
var loader:Loader;
var bmp:Bitmap = new Bitmap();
var bmd:BitmapData = new BitmapData(100, 100, true, 0x000000);
base64Decoder = new Base64Decoder();
base64Decoder.decode(data);
try {
byteArray = base64Decoder.toByteArray();
byteArray.position = 0;
} catch (e:Error) {
return null;
}
loader = new Loader();
loader.loadBytes(byteArray);
//読み込みが完了したらbitmapDataに書き込む。
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, function(e:Event):void{
bmd.draw(loader);
bmp.bitmapData = bmd;
});
return bmp;
}
}