0

loadFromCache というメソッドがあり、キャッシュにビットマップが見つかった場合はビットマップを返します。簡単に言うと、このメソッドに絞り込み、try/catch が失敗した場合は最後に null を返します。

FileInputStream fis = new FileInputStream(getCacheDir()+(""+position));
        ObjectInputStream ois = new ObjectInputStream(fis);
        Bitmap temp = (Bitmap)ois.readObject();
        fis.close();
        return temp;

以前に Bitmap.compress(...) メソッドを試してビットマップを保存しましたが、私のニーズには少し遅かったです... はい、ビットマップはこれらの位置に書き込まれましたが、それがどうかはわかりません (ビットマップ)シリアライズ可能なので、実際に保存していますか? はい、ファイルを書き込んだときにフラッシュすることを思い出しました。

4

2 に答える 2

0

Bitmap.compress()あなたにとって遅すぎるのはどうですか?唯一の高速な (?) 方法は、ビットマップを変更せずにディスクに書き込むことです。以下を参照してください。

と併用MappedByteBufferするとBitmap.copyPixelsToBuffer()うまくいく場合があります。私はこれをテストしていませんが、うまくいくようです。ほとんどの場合、画像の寸法を自分で保存する必要があることに注意してください。

于 2011-03-27T10:02:02.513 に答える
0

Bitmap.compress が非常に遅いという経験を共有します。

私のソース画像は jpeg で、Bitmap.CompressFormat.PNG を bitmap.compress に渡していました。これにより、圧縮操作に 10 ~ 15 秒かかりました。

JPEG に変更すると (ソース ファイルと宛先ファイルが同じ画像形式のままになるように)、操作に 1 秒もかかりません。おそらく、元の質問は同様の手段で生じたものであり、他の誰かがこれが役立つと思うかもしれません.

于 2013-07-05T20:37:32.897 に答える