我从后端以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。任何人都可以帮我建议如何删除我得到的错误?
答案 0 :(得分:1)
您可以先将base64编码的字符串保存到文件中,然后在其他地方使用该文件引用。
对于Bitmaps的大小而言,这将更可靠,并且在将其保存到文件后,缩小范围,如Raghunandan的评论中所提到的也很容易实现。