我需要能够从磁盘加载jpeg / png图像并在flex中显示它并将其作为base64编码的字符串发送到服务器。但是一旦加载了图像文件,在我的flash.display.LoaderInfo
对象中,bytes
属性(ByteArray
的类型)包含的字节多于文件内容。
实施例: 图像文件大小:3089 flash.display.LoaderInfo.bytesTotal:3089 flash.display.LoaderInfo.bytes.length:3155
由于我需要对base64字符串中的flash.display.LoaderInfo.bytes
进行编码,我不知道必须将哪个ByteArray对象发送到服务器。
我不想将bytearray内容绘制到Bitmap图像中并将其重新编码为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;
}
答案 0 :(得分:1)
var encoder:Base64Encoder = new Base64Encoder();
encoder.encodeBytes(fileRef.data);
imagePart = encoder.flush();
它有效。
答案 1 :(得分:0)
通常你应该发送bytearray的所有内容。 如何加载图像,您确定要以二进制形式接收数据吗? 如果显示加载的图像有问题吗?
如果使用base64对数据进行编码,则由于您使用6位重新编码8位长数据,因此生成的数据长度将大于原始数据。所以对于一个字节,它将适合2个字节。