2011-03-27 71 views
0

我有一個名爲loadFromCache方法,如果在緩存中找到它返回一個位圖。長話短說我已經縮小到這種方法,如果try/catch失敗,最後返回null。可以使用ObjectOutputStream將位圖寫入緩存嗎?

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

我以前試過Bitmap.compress(...)的方式來保存位圖,但他們對我的要求有點慢...是位圖已經被寫入這些位置,但我不」 t知道它(位圖)是否可序列化,以便實際保存?是的,當我寫文件時,我記得沖洗。

回答

0

如何Bitmap.compress()太慢了嗎?唯一更快的方法是將位圖寫入磁盤,如下所示。

Bitmap.copyPixelsToBuffer()一起使用MappedByteBuffer可能工作。我沒有測試過,但它似乎可以工作。請注意,您很可能必須自行存儲圖像尺寸。

+0

你看,我正在做什麼,它真的沒有任何意義,壓縮到A類的pngs位圖,然後解碼他們5秒後,在類B,我需要在A類中創建相同的位圖。 ..我一直在麻煩閱讀文件到我的AnimationDrawable使用解碼流。我有一個擴展可繪製的子類,並在構造函數中接收位圖。然後,當我嘗試添加的文件,什麼也不顯示的AnimationDrawable,但是當我從R.drawable addFrames,它工作正常。 – 2011-03-27 17:09:06

+0

這裏是我使用的代碼(int x = 0; x 2011-03-27 17:15:11

0

分享一個經驗,我剛剛和Bitmap.compress是非常緩慢:

我的源圖像是JPEG,和我經過Bitmap.CompressFormat.PNG到bitmap.compress。這導致壓縮操作花費10-15秒。

一旦我將其更改爲JPEG(使源文件和目標文件保持相同的圖像格式),則操作時間不到一秒鐘。也許最初的問題是通過類似的方式產生的,也許其他人認爲這很有幫助。

相關問題