ディスクから jpeg/png 画像をロードしてフレックスで表示し、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 コンテンツをビットマップ イメージに描画して 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;
}