2013-12-20 60 views
0

加載我正在從我的後端圖像基座64的格式,對其進行解碼,並在網格視圖加載圖像。它第一次正常工作,但當我點擊「顯示更多圖像」按鈕,它給了我錯誤位圖大小超過虛擬機預算。當我點擊該按鈕時,我以base64格式獲取圖像,並且我再次設置網格視圖的適配器以刷新視圖。我閱讀了許多與這個問題有關的答案,但他們都是從drawables讀取圖像,而不是以base64格式接收。我的代碼來獲取圖片來自的base64解碼,以位圖如下:位圖大小超過VM預算時圖像從內容的base64

public static void getImages(JSONObject jobj){ 
    try{ 
     JSONArray jarr = jobj.getJSONArray("images"); 
     Log.v("array size",""+jarr.length()); 
     for(int i = 0; i < jarr.length(); i++){ 
      String encodedContent = jarr.get(i).toString(); 
      byte[] decodedContent = Base64.decode(encodedContent); 
      Bitmap bmp = BitmapFactory.decodeByteArray(decodedContent, 0, decodedContent.length); 
      images.add(bmp); //Static array list to save the bitmap images 
     } 
    }catch(JSONException e){ 
     e.getMessage(); 
    } 

下一次點擊「顯示更多圖片」按鈕將其添加到圖像的ArrayList後的圖像進來了。任何人都可以幫助我建議如何刪除我得到的這個錯誤?

+0

縮小位圖 – Raghunandan

+0

@Raghunandan感謝您的建議,但我如何才能瞭解理想的尺寸以縮小圖像,以便它可以在所有的android設備上使用?我聽起來可能聽起來很愚蠢,但我在android中使用圖像的時候是個不錯的選擇。 – fastLearner

回答

1

你可以有編碼字符串首先被保存到一個文件中的Base64,然後使用該文件引用其他任何地方。

就位圖大小而言,這將更可靠,並且在您將其保存到文件後,按照Raghunandan的評論中提到的縮小比例也很容易。

+0

我一次從我的後端加載近8張圖片。將這些數據寫入每個圖像的文件,然後再縮小圖像會增加顯示圖像的開銷。我希望有更好的解決方案呢? – fastLearner

+0

你是對的,它需要一些時間,但在大多數情況下,一次寫8個文件可能需要一兩個。之後,如果需要,您可以重新使用這些文件。 –

+0

所以你建議如果我已經加載了16張圖片,我應該創建16個包含base64格式內容的文件?如果我把所有的內容放在同一個文件中,那麼我將不得不爲不同的圖像解析它。對? – fastLearner

相關問題