Flex invio di snapshot senza utilizzare base64Encode
-
20-09-2019 - |
Domanda
var is:ImageSnapshot = myImagesnapshot;
var str:String = ImageSnapshot.encodeImageAsBase64(is);
Per ora, io mando il mio dati JPEG al server con il codice di cui sopra.
Il problema è che quasi raddoppia la dimensione dei dati.
C'è un modo per inviare i dati di immagine direttamente senza l'utilizzo di alcuna codifica.
Soluzione 2
Ecco un esempio di invio di dati di immagine senza utilizzare 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;
Sul lato PHP, ho bisogno di accesso:
$globalS["HTTP_raw_post_data"]
Altri suggerimenti
Base64 aumenta dimensioni di un terzo, quindi se davvero hanno circa il 100% in testa, è avere un problema altrove.
Non ho guardato le fonti per bene, ma dal riferimento a quanto pare, si potrebbe recuperare il dati binari nofollow noreferrer direttamente.
solo infilare che in un URLRequest e inviarlo per POST .
È possibile salvare l'istantanea come jpg o png.
Date un'occhiata a: http://blog.flexexamples.com/2007/12/07/using-the-imagesnapshot-class-to-capture-images-as-jpegs-or-pngs-in-flex-3 /