 
swfからpngを作成したいと思いいろいろググってるとFlash Q&Aで紹介されていました。
さっそくソースをまる写しにやってみたのですがうまくいった。
でもって疑問。
これを作成するのにas3corelibのPNGEncorderを使用したんだけどこれって商用OKなの?
BSDライセンスってなってるけど…?
以下ソース
Main.as
package 
{
    import flash.display.*;
    import mx.utils.Base64Encoder;
    import com.adobe.images.PNGEncoder;
    import flash.net.*;
    import flash.utils.ByteArray;
    /**
     * ...
     * @author painkiller
     */
    public class Main extends Sprite {
        private var bmd:BitmapData;
        public function Main():void {
            bmd = new BitmapData(stage.stageWidth, stage.stageHeight, false, 0xFFFFFF);
            bmd.draw(this);
            
            var byteArray:ByteArray =  PNGEncoder.encode(bmd);
            var enc:Base64Encoder = new Base64Encoder();
            enc.encodeBytes(byteArray);
            
            var variables:URLVariables = new URLVariables();
            variables.img = enc.flush();
            //trace(variables.img)
            variables.filename = "image.png";
            
            var urlRequest:URLRequest = new URLRequest("saveimg.php");
            urlRequest.method = URLRequestMethod.POST;
            urlRequest.data = variables;
            
            var urlLoader:URLLoader = new URLLoader();
            urlLoader.load(urlRequest);
        }
    }
    
}
saveimg.php
<?php
$img = base64_decode( $_POST['img'] );
$name = $_POST['filename'];
$fp = fopen( "img/".$name, 'wb' );
fwrite( $fp, $img ); 
fclose( $fp );
?>
この記事にトラックバックする