Вопрос

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

На данный момент я отправляю свои данные в формате JPEG на сервер с помощью приведенного выше кода.
Проблема в том, что это почти удваивает размер данных.
Есть ли способ отправить данные изображения напрямую, без использования какой-либо кодировки.

Это было полезно?

Решение 2

Вот пример отправки данных изображения без использования 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"]

Другие советы

base64 увеличивает размер на треть, поэтому, если у вас действительно около 100% накладных расходов, у вас проблема в другом месте.

не особо внимательно изучал исходники, но судя по ссылке, кажется, вы могли бы получить двоичные данные напрямую.

просто засунь это в URL-запрос и отправить его по ПОЧТА.

Вы можете сохранить снимок в формате jpg или png.

Взгляни на:http://blog.flexexamples.com/2007/12/07/using-the-imagesnapshot-class-to-capture-images-as-jpegs-or-pngs-in-flex-3/

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top