2016-03-21 4 views
0

После полудня все.Показать PNG Байт-массив в ImageView

Я пытаюсь показать изображение PNG в ImageView на моем мобильном приложении Android. Изображение поставляется в виде массива байтов из базы данных.

Я новичок в разработке Android, поэтому я не уверен, как правильно это сделать. Я попытался сохранить файл и установить изображение с помощью URI, но не добился успеха.

File tempFile = File.createTempFile("NewsImage", lastNewsDTO.ImageExt, null); 
    FileOutputStream fos = new FileOutputStream(tempFile); 
    fos.write(lastNewsDTO.Image) 
    ((ImageView)rootView.findViewById(R.id.ivNewsImage)).setImageURI(Uri.fromFile(tempFile)); 

Есть ли у меня правильные линии или есть лучший метод?

Спасибо за чтение, помощь приветствуется!

ответ

0

Если вы говорите, что у вас есть byte[], который содержит PNG, используйте BitmapFactory and its decodeByteArray() method, чтобы преобразовать его в Bitmap. Затем call setImageBitmap() on the ImageView с этим Bitmap.

Не записывайте вещи на диск, которые не нужно записывать на диск.

+0

Спасибо за комментарий CommonsWare см мой ответ на Харшад. Я уже пробовал этот метод раньше, и я тоже устал писать на диск. – horHAY

+0

@horHAY: «Экземпляр Bitmap имеет значение null, когда я отлаживаю и перешагиваю эту строку кода» - тогда, по-видимому, это не действительный PNG. – CommonsWare

+0

Я добавил изображение и его определенно PNG? – horHAY

0

Простой Используется:

byte[] data; 

public static void setImageViewWithByteArray(ImageView view, byte[] data) { 
     Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length); 
     view.setImageBitmap(bitmap); 
    } 
+0

Спасибо, что комментировали Харшад. Я пробовал этот метод до указанного выше кода, но не добился успеха. Экземпляр Bitmap имеет значение null, когда я отлаживаю и перехожу к этой строке кода. Кроме того, не уверен, что это важно, изображение было добавлено в базу данных с помощью C#, может ли это повлиять на ByteArray? Приветствия. – horHAY

Смежные вопросы