如何通过解码来自webserver的图像在listview中显示图像?

时间:2013-12-16 07:02:57

标签: android bitmap

我正在尝试将我的手机联系人详细信息(如姓名,电子邮件,地址和照片)发布到json fromat中的网络服务器,其中图像以Base64格式编码。在服务器端,图像作为BLOB类型存储在数据库中。我正试图在列表视图中检索并显示服务器中的所有数据。我能够显示除图像之外的所有数据。

以下是代码:

对于图像编码:

ByteArrayOutputStream byteArrayBitmapStream = new ByteArrayOutputStream();
                          bitmap.compress(Bitmap.CompressFormat.PNG, COMPRESSION_QUALITY, byteArrayBitmapStream);
                          byte[] b = byteArrayBitmapStream.toByteArray();
                          String encodedImage = Base64.encodeToString(b, Base64.DEFAULT);

jsonObject.accumulate("imageData",encodedImage);

用于解码图像:

String image=(String)jsonObject.get("image");
byte[] byteArray =  Base64.decode(jsonObject.getString("imageData").getBytes(), Base64.DEFAULT) ;

Bitmap bmp1 = BitmapFactory.decodeByteArray(byteArray, 0, byteArray.length);

HashMap<String, Object> map = new HashMap<String, Object>();
map.put(TAG_IMAGE,bmp1);

请帮我在listview中显示图片。谢谢......

错误日志:

12-16 12:07:58.403: E/BitmapFactory(1072): Unable to decode stream: java.io.FileNotFoundException: /android.graphics.Bitmap@40f67ac0: open failed: ENOENT (No such file or directory)
12-16 12:07:58.423: I/System.out(1072): resolveUri failed on bad bitmap uri: android.graphics.Bitmap@40f67ac0

2 个答案:

答案 0 :(得分:1)

我认为你应该使用Universal Image Loader for Android库。

这将为您显示所有复杂的内容,以便从具有许多自定义选项的Web服务器显示图像。

答案 1 :(得分:0)

我认为你应该下载lazy loader

这将是您从webserver

显示图像的所有复杂内容