Я много лет искал, пытаясь добиться этого, и я не могу получить растровое изображение для отображения. У меня есть веб-сервис, который я называю с идентификатором и возвращает 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);
Это не работает для меня. Для большинства методов, которые я попробовал, он просто ничего не отображает, но для этого конкретного метода он приводит к сбою приложения при загрузке (даже если у меня есть попытка/улов.)
проверьте вашу базу64 вход. Он может использовать другой флаг (возможно, NO_WRAP) – njzk2
, как я могу это проверить? –
проверьте строку base64, чтобы увидеть, если она разделена на 80 символов. Также, пожалуйста, определите «не работает» и опубликуйте stacktrace. – njzk2