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(使源文件和目标文件保持相同的图像格式),那么操作只需不到一秒钟的时间。也许最初的问题是通过类似的方式提出的,也许其他人觉得这很有帮助。

于 2013-07-05T20:37:32.897 回答