Flash/as3/画像送信保存
提供: 初心者エンジニアの簡易メモ
PNGEncoderダウンロード
http://code.google.com/p/as3corelib/downloads/list?can=1 からas3corelib-.93.zipをダウンロードし、 D:\flex\flex_sdk_4.0.0.14159\frameworks\libs\as3corelib.swc辺りへコピー
as3
package { import flash.display.Sprite; import ImgSendLogic; public class Main extends Sprite { public function Main():void { var logic:ImgSendLogic = new ImgSendLogic(); logic.execLogic(); } } } package { // ライブラリのインポート import com.adobe.images.PNGEncoder; import flash.display.BitmapData import flash.utils.ByteArray import flash.display.Sprite; import flash.net.URLVariables; import flash.net.URLRequest; import flash.net.URLLoader; import flash.net.URLRequestMethod; import mx.utils.Base64Encoder; /** * PNG送信ロジック */ public class ImgSendLogic { public function execLogic():void { // Sprite設定 var sp:Sprite = new Sprite(); sp.graphics.beginFill(0xff0000); sp.graphics.drawRect(0, 0, 100, 100); sp.graphics.endFill(); // ビットマップ設定 var bitmapData:BitmapData = new BitmapData(100, 100, false, 0x00CCCCCC); bitmapData.draw(sp); // bitmapDataのデータをPNGに変換しbyteArrayに格納 var byteArray:ByteArray = PNGEncoder.encode(bitmapData); // Base64形式に変換 var enc:Base64Encoder = new Base64Encoder(); enc.encodeBytes(byteArray); // URLVariables var variables:URLVariables = new URLVariables(); // Base64画像セット variables.img = enc.flush(); // URLの設定 var urlRequest:URLRequest = new URLRequest("http://localhost/flex/AS3/bin/post.php"); urlRequest.method = URLRequestMethod.POST; urlRequest.data = variables; // 画像送信 var urlLoader: URLLoader = new URLLoader(); urlLoader.load(urlRequest); } } }
php
<?php // Base64 から元のバイナリデータへデコードして受け取り $img = base64_decode($_POST['img']); $name = "sample.png"; $fp = fopen($name, 'wb'); fwrite($fp, $img); fclose($fp); ?>