سؤال

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٪ النفقات العامة، لديك مشكلة في مكان آخر.

لم تنظر إلى المصادر إلى ما يرام، ولكن من المرجع يبدو، يمكنك استرداد البيانات الثنائية مباشرة.

فقط ثنية ذلك في Urlrequest. وإرسالها لكل بريد.

يمكنك حفظ اللقطة باسم JPG أو PNG.

ألق نظرة على:http://blog.flexexamples.com/2007/12/07/Sing-The-ImagesNapshot-Class-Capture-Images-as-jpegs-or-pngs-in-flex-3/

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top