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 );
?>
この記事にトラックバックする