2012-04-03 33 views
1

我試圖執行下面的代碼將圖像路徑轉換爲位圖以顯示在我的活動中。我收到下面的錯誤。我已經嘗試了很多不同的解決方案,但沒有正在獲取錯誤:對於此過程的外部分配過大

Strange out of memory issue while loading an image to a Bitmap object

Android: Resize a large bitmap file to scaled output file

OutOfMemoryError: bitmap size exceeds VM budget :- Android

錯誤: E/dalvikvm堆(19252):12742656個字節外部分配太大爲這個過程。

for(int i = 0; i < numItems; i++) { 

    File imgFile = new File(photoPaths.get(i)); 

     if(imgFile.exists()) 
     { 

      images[i] = BitmapFactory.decodeFile(imgFile.getAbsolutePath()); 


     } 
+0

更努力嗎?我知道一個事實,這一個工程:http://stackoverflow.com/questions/477572/android-strange-out-of-memory-issue-while-loading-an-image-to-a-bitmap-object/ 823966#823966 – dmon 2012-04-03 21:33:59

回答

0

你試圖加載多個大的位圖,其中至少有一個是12MB〜。他們太大了。你發佈的解決方案的工作。將位圖調整到更小的位置,尤其是當您在屏幕上顯示位圖時。

1

您可以考慮以更及時的方式加載它們,或使用位圖工廠的inSampleSize選項(即,您將BitmapFactory.Options傳入工廠,並將inSampleSize設置爲,理想情況下, 2的冪)。還要確保你設置爲inPurgeable爲真。

如果您從MediaStoreContentProvider中提取這些圖像,則還可以使用thumbnails

也許你可以告訴我們更多關於你的用例,所以我們可以提供更好的幫助。

+0

爲inPurgeable = true建議豎起大拇指 – 2012-06-04 10:04:55

相關問題