2013-05-16 3 views
1

Я много лет искал, пытаясь добиться этого, и я не могу получить растровое изображение для отображения. У меня есть веб-сервис, который я называю с идентификатором и возвращает BLOB образ, который я хранить в строке (IMG)Преобразование изображения BLOB в растровое изображение и отображение в ImageView

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 содержит то, что, как представляется, действительный результат, когда я вывести его к textview, поэтому я уверен, что код выше работает нормально. Проблема заключается в том, что эта строка преобразуется в растровое изображение. Я пробовал много способов, но из того, что я мог найти, кажется, это лучший способ сделать это.

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

Это не работает для меня. Для большинства методов, которые я попробовал, он просто ничего не отображает, но для этого конкретного метода он приводит к сбою приложения при загрузке (даже если у меня есть попытка/улов.)

+0

проверьте вашу базу64 вход. Он может использовать другой флаг (возможно, NO_WRAP) – njzk2

+0

, как я могу это проверить? –

+0

проверьте строку base64, чтобы увидеть, если она разделена на 80 символов. Также, пожалуйста, определите «не работает» и опубликуйте stacktrace. – njzk2

ответ

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

Если IMG является Blob типа. Вы можете получить байт [].

byte[] imgByte = img.getBlob(); 
Bitmap bmp = BitmapFactory.decodeByteArray(imgByte,0,imgByte.length); 
imgbox.setImageBitmap(bmp); 
Смежные вопросы