2013-07-21 96 views
0

我想加載大尺寸的圖像,但我有問題做出來。它崩潰,因爲OutOfMemoryError。這是我的數組:如何將數組元素(圖像)轉換爲位圖?

Integer[] img = { 
R.drawble.pic1, R.drawble.pic2, R.drawble.pic3, R.drawble.pic4 
}; 

如何轉換IMG [0],IMG [1],IMG [2]和IMG [3]爲位圖? 請幫助..對不起我的英語不好。

+0

http://developer.android.com/training/displaying-bitmaps/manage-memory.html。檢查這個主題。 '回收'或縮小圖像。 – Raghunandan

+0

@Raghunandan:我試過把圖片轉換成位圖。但我不能從元素數組中獲得它。 –

+1

Android在加載大圖像時出現問題。看看文章[高效載入大型位圖](http://developer.android.com/training/displaying-bitmaps/load-bitmap.html)。 –

回答

0

試試這個代碼,你將一組ID轉換成的Bitmap數組:

Integer[] img = { R.drawble.pic1, R.drawble.pic2, R.drawble.pic3, 
      R.drawble.pic4 }; 

    Bitmap[] bitmap = new Bitmap[img.length]; 
    for (int i = 0; i < img.length; i++) 
     bitmap[i] = BitmapFactory.decodeResource(getResources(), img[i]); 

如果您有問題需要轉換大尺寸圖片看看Displaying Bitmaps Efficiently

0

Android應用程序有一個有限的堆大小(最小的舊設備是16MB少)。這根據設備而異,所以在質量保證期間要小心。由於位圖每個像素可能需要多達4個字節,所以大的位圖可以輕鬆填滿堆(1000 x 1000像素= 3.8MB)

這意味着您必須非常小心並使用幾種策略避免浪費內存:

  1. 請勿將所有位圖同時加載到內存中。例如,如果您在ViewPager中顯示它們,則一次只能加載1-2頁。隱藏頁面時,銷燬其位圖並調用bitmap.recycle()以確保內存立即釋放。

  2. 如果位圖大於屏幕尺寸,可以縮小尺寸以節省內存。技術here將允許您加載它最初減少2/3/4 ..如果您需要更多的微調,您可以加載它的全尺寸,然後使用Bitmap.createScaledBitmap重新調整。只要不要忘記recycle()立即原來的大位圖。

  3. 請確保使用內存檢查工具(如DDMSEclipse MAT)探索您的應用的內存使用情況。我推薦在Android 4+上進行大部分探索,因爲2.x在本地堆中保存了位圖,這是無法輕鬆探索的。如果您可以將應用程序保持在16MB內存消耗峯值以下,則不應再次發生OutOfMemoryError。