5

私は真剣にどこでも見ましたが、解決策が見つかりません。私のアプリは、iOS と Android の両方で許可されているキャッシュの場所に、UTF バイトを XML ファイルとして簡単に保存します。

しかし、Bitmap / BitmapData を同じキャッシュ フォルダー内のファイルに保存する方法がわかりません。ファイルの作成は問題ありません....

_fs.open(_f, FileMode.WRITE);

//What goes in here to save the Bitmap?

_fs.close();

これに関するヘルプは大歓迎です。

ありがとう

更新:コードは次のとおりです...

        _smallLogo = Bitmap(_loader.content);
        //this.addChild(_smallLogo);

        var jpg:JPGEncoder = new JPGEncoder(100);
        var bd:BitmapData = new BitmapData(_smallLogo.width, _smallLogo.height);
        bd.draw(_smallLogo);
        var ba:ByteArray  = jpg.encode(bd);

        //3
        _fs.open(_f, FileMode.WRITE);
        _fs.writeBytes( ba, 0, ba.length );         
        _fs.close();

更新 - 回答済み

//SAVE
_smallLogo = Bitmap(_loader.content);           
var jpg:JPGEncoder = new JPGEncoder(100);
var ba:ByteArray  = jpg.encode(_smallLogo.bitmapData);

_fs.open(_f, FileMode.WRITE);
_fs.writeBytes( ba, 0, ba.length );         
_fs.close();

//OPEN
private function getLogo():void {
    var ba:ByteArray = new ByteArray();

    _fs.open(_f, FileMode.READ);
    _fs.readBytes(ba);          
    _fs.close();

    var loader:Loader = new Loader();
    loader.contentLoaderInfo.addEventListener(Event.COMPLETE, getBitmapData);
    loader.loadBytes(ba);
}

private function getBitmapData(e:Event):void {
    var decodedBitmapData:BitmapData = Bitmap(e.target.content).bitmapData;
    var newBMP:Bitmap = new Bitmap();
    newBMP.bitmapData = decodedBitmapData;

    this.addChild(newBMP);
}
4

1 に答える 1

1

デバイス キャッシュに書き込んでいて、ファイル サイズよりも速度が重要な場合は、次の使用を検討してください。

bd.encode(bd.rect, new PNGEncoderOptions(true), ba);

fastCompression = true を指定しない場合、png エンコーダーは jpeg エンコーダーよりも遅いことに注意してください。

as3 png エンコーディングのパフォーマンスに関する詳細はこちら

何よりも(エンコードとデコードの両方で)速度が必要な場合は、ビットマップデータを未加工の形式で書き込むことができます。サイズが既にわかっている場合はヘッダーなしで、画像サイズを埋め込んで見やすくしたい場合は bmp などの基本的なヘッダーを付けます。あなたのキャッシュ

ところで、なぜ最初にビットマップを再エンコードする必要があるのか​​ わかりません。ビットマップはすでにローダーから来ているようですので_loader.contentLoaderInfo.bytes、ロードしたばかりのファイルのByteArrayをすでに取得しているはずです。エンコードされており、おそらく既に圧縮されているファイルで非可逆圧縮を行うことを回避します。

于 2014-06-19T14:12:59.950 に答える