facebook twitter hatena line email

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);
?>