0
var is:ImageSnapshot = myImagesnapshot;
var str:String = ImageSnapshot.encodeImageAsBase64(is);

今のところ、上記のコードでjpegデータをサーバーに送信しています。
問題は、データのサイズがほぼ2倍になることです。
エンコーディングを使用せずに画像データを直接送信する方法はありますか?

4

3 に答える 3

1

base64 ではサイズが 3 分の 1 増加するため、実際に約 100% のオーバーヘッドがある場合は、別の場所に問題があります。

ソースをよく見ていませんが、参照から、バイナリデータを直接取得できるようです。

それをURLRequestに入れ、POSTごとに送信するだけです。

于 2010-03-15T09:41:09.830 に答える
0

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"]
于 2010-03-26T16:01:12.020 に答える
-1

スナップショットをjpgまたはpngとして保存できます。

ご覧ください:http: //blog.flexexamples.com/2007/12/07/using-the-imagesnapshot-class-to-capture-images-as-jpegs-or-pngs-in-flex-3/

于 2010-03-15T12:33:18.827 に答える