2015-04-16 29 views
0

我有一些關於位圖解碼的問題。位圖解碼的內存

  1. 當我嘗試位圖從一個字節[]數組進行解碼,使用BitmapFactory.decodeByteArray,是什麼PARAM字節[]和在結果位圖中的字節mBuffer []之間的差。當函數返回時,位圖仍然保持對byte []參數的引用?

  2. ,當我從一個JPG文件從SD卡使用下面的代碼進行解碼位圖:

    File file = new File(getExternalCacheDir(), "large.jpg"); 
    bitmap = BitmapFactory.decodeFile(file.getAbsolutePath()); 
    if(mImageView != null){ 
        mImageView.setImageBitmap(bitmap); 
    } 
    

    這個JPG文件10800 * 5400的分辨率和13.82M大小,結果位不爲空,且有沒有OOM錯誤,但未顯示位圖。那怎麼可能?我認爲在這種情況下,android應該拋出一個OOM錯誤,以便我可以捕獲它來再次縮放位圖。但它什麼也沒有顯示。這似乎不合理。有沒有人知道原因?

+1

「參數字節[]和結果位圖中的mBuffer字節[]之間有什麼區別」 - 第一個會保存PNG,JPEG等格式的東西。第二個保存解碼圖像的AARRGGBB字節。 – CommonsWare

+0

@CommonsWare謝謝。完全瞭解! – tinaJohnny

回答

0

幸運的是,我發現當我將layerType設置爲LAYER_TYPE_SOFTWARE時,會顯示位圖。所以我認爲硬件渲染器有一個圖像大小限制。