将BLOB图像转换为位图并在ImageView中显示

时间:2013-05-16 14:47:21

标签: java android blob

我一直在环顾四周试图让这一切发展,我无法显示位图。我有一个我用id调用的Web服务,它返回一个BLOB图像,我存储在一个字符串中(img)

DefaultHttpClient httpclient = new DefaultHttpClient();
HttpGet httpget = new HttpGet("http:site.com?GETBLOB&__blobRef=1&USER_ID=6379");
HttpResponse response = httpclient.execute(httpget);
BufferedReader in = new BufferedReader(new
                    InputStreamReader(response.getEntity().getContent()));
                    StringBuffer sb = new StringBuffer(""); 
                    String line = ""; 
                    String NL = System.getProperty("line.separator"); 

                    while ((line = in.readLine()) != null) 
                    { 
                        sb.append(line + NL); 
                    } 

                    in.close();
                    img = sb.toString(); 

当我将它输出到textview时,字符串img包含看似有效的结果,所以我很确定上面的代码工作正常。问题是将该字符串转换为位图。我已经尝试了很多方法,但从我能找到的方面来看,这似乎是公认的最佳方式。

byte[] decodedString = Base64.decode(img, Base64.DEFAULT);
bm = BitmapFactory.decodeByteArray(decodedString, 0, decodedString.length);
ImageView imgbox = (ImageView)findViewById(R.id.imagebox);
imgbox.setImageBitmap(bm);

这对我不起作用。对于我尝试过的大多数方法,它只显示除了这个特定的方法,它会导致应用程序在加载时崩溃(即使我有一个try / catch。)

2 个答案:

答案 0 :(得分:1)

似乎我过度复杂了。这非常有效,而且非常简单

URL imgurl = new URL("http:mysite?GETBLOB&__blobRef=1&USER_ID="+ID);
InputStream picin = imgurl.openStream();
Bitmap avatar = BitmapFactory.decodeStream(picin);
imgbox.setImageBitmap(avatar);

答案 1 :(得分:0)

如果 img Blob 类型。你可以从中获取byte []。

byte[] imgByte = img.getBlob();
Bitmap bmp = BitmapFactory.decodeByteArray(imgByte,0,imgByte.length);
imgbox.setImageBitmap(bmp);