var is:ImageSnapshot = myImagesnapshot;
var str:String = ImageSnapshot.encodeImageAsBase64(is);
今のところ、上記のコードでjpegデータをサーバーに送信しています。
問題は、データのサイズがほぼ2倍になることです。
エンコーディングを使用せずに画像データを直接送信する方法はありますか?
var is:ImageSnapshot = myImagesnapshot;
var str:String = ImageSnapshot.encodeImageAsBase64(is);
今のところ、上記のコードでjpegデータをサーバーに送信しています。
問題は、データのサイズがほぼ2倍になることです。
エンコーディングを使用せずに画像データを直接送信する方法はありますか?
base64 ではサイズが 3 分の 1 増加するため、実際に約 100% のオーバーヘッドがある場合は、別の場所に問題があります。
ソースをよく見ていませんが、参照から、バイナリデータを直接取得できるようです。
それをURLRequestに入れ、POSTごとに送信するだけです。
Base64を使用せずに画像データを送信するサンプルを次に示します。
var myEncoder:JPGEncoder = new JPGEncoder(100);
var byteArray:ByteArray = myEncoder.encode(bitmapData);
var header:URLRequestHeader = new URLRequestHeader("Content-type", "application/octet-stream");
var url:String = "../../default.php";
var saveJPG:URLRequest = new URLRequest(url);
saveJPG.requestHeaders.push(header);
saveJPG.method = URLRequestMethod.POST;
saveJPG.data = byteArray;
PHP側では、次の場所にアクセスする必要があります。
$globalS["HTTP_raw_post_data"]
スナップショットをjpgまたはpngとして保存できます。
ご覧ください:http: //blog.flexexamples.com/2007/12/07/using-the-imagesnapshot-class-to-capture-images-as-jpegs-or-pngs-in-flex-3/