In case Flash no longer exists; a copy of this site is included in the Flashpoint archive's "ultimate" collection.

Dead Code Preservation :: Archived AS3 works from wonderfl.net

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;
    }
}