1

私はこれを行おうとして何年も探し回っていましたが、ビットマップを表示できません。ID で呼び出す Web サービスがあり、文字列 (img) に保存する BLOB イメージを返します。

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(); 

文字列 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 があっても)。

4

2 に答える 2

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);
于 2013-05-16T15:50:36.743 に答える