Мне нужно иметь возможность загружать изображение jpeg / png с диска, показывать его в формате flex и отправлять на сервер в виде строки в кодировке base64. Но после загрузки файла изображения в моем объекте flash.display.LoaderInfo
свойство bytes
(тип ByteArray
) содержит больше байтов, чем содержимое файла.
Пример:
размер файла изображения: 3089
flash.display.LoaderInfo.bytesTotal: 3089
flash.display.LoaderInfo.bytes.length: 3155
Поскольку мне нужно закодировать строку flash.display.LoaderInfo.bytes
в base64, я не знаю, какую часть объекта ByteArray я должен отправить на сервер.
Я не хочу рисовать содержимое bytearray в растровое изображение и перекодировать его как jpg, потому что я должен сохранить исходное качество файла.
Спасибо
некоторый код:
private function onDataLoadComplete(event:Event):void {
var encoder:Base64Encoder = new Base64Encoder();
//var imagePartBytes:ByteArray = new ByteArray();
//imagePartBytes.writeBytes(event.target.bytes, 0, event.target.bytesTotal);
//imagePartBytes.writeBytes(event.target.bytes, 0, event.target.bytes.length);
//imagePartBytes.writeBytes(event.target.bytes, event.target.bytes.length-event.target.bytesTotal, event.target.bytesTotal);
encoder.encodeBytes(event.target.bytes);
var imagePart:String = encoder.flush();
trace(imagePart);
data = fileName+";"+event.target.contentType+";"+imagePart;
_changed = true;
}