从base64内容加载图像时,位图大小超过VM预算

时间:2013-12-20 10:48:46

标签: android image bitmap base64

我从后端以64格式获取图像,对其进行解码并在网格视图中加载图像。它第一次工作正常,但当我点击“显示更多图像”按钮时,它给出了错误位图大小超过VM预算。当我点击该按钮时,我得到base64格式的图像,然后再次设置网格视图的适配器以刷新视图。我阅读了许多与此问题相关的答案,但所有这些答案都是从drawables中读取图像而不是以base64格式接收。我将从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。任何人都可以帮我建议如何删除我得到的错误?

1 个答案:

答案 0 :(得分:1)

您可以先将base64编码的字符串保存到文件中,然后在其他地方使用该文件引用。

对于Bitmaps的大小而言,这将更可靠,并且在将其保存到文件后,缩小范围,如Raghunandan的评论中所提到的也很容易实现。