Как преобразовать байтовый массив в растровое изображение

74

Я хочу сохранить изображение в SQLite DataBase. Я попытался сохранить его с помощью BLOB и String, в обоих случаях он сохраняет изображение и может получить его, но когда я конвертирую его в Bitmap, используя BitmapFactory.decodeByteArray(...) возвращает значение null.

Я использовал этот код, но он возвращает null

Bitmap  bitmap = BitmapFactory.decodeByteArray(blob, 0, blob.length);
  • 4
    Пожалуйста, прочитайте первые 5-10 ссылок в разделе «Связанные» на этой странице.
  • 2
    Вы кодировали растровое изображение перед записью в базу данных?
Теги:
bitmap
bytearray

2 ответа

191
Лучший ответ

Просто попробуйте следующее:

Bitmap bitmap = BitmapFactory.decodeFile("/path/images/image.jpg");
ByteArrayOutputStream blob = new ByteArrayOutputStream();
bitmap.compress(CompressFormat.PNG, 0 /* Ignored for PNGs */, blob);
byte[] bitmapdata = blob.toByteArray();

Если bitmapdata - массив байтов, то получение Bitmap выполняется следующим образом:

Bitmap bitmap = BitmapFactory.decodeByteArray(bitmapdata, 0, bitmapdata.length);

Возвращает декодированный Bitmap или null, если изображение не может быть декодировано.

  • 13
    когда изображение не может быть декодировано?
  • 2
    изображение не может быть декодировано, если оно находится в другом формате, который вы пытаетесь декодировать с
Показать ещё 2 комментария
6

Ответ Uttam не помог мне. Я просто получил нуль, когда я это сделаю:

Bitmap bitmap = BitmapFactory.decodeByteArray(bitmapdata, 0, bitmapdata.length);

В моем случае битмапдата имеет только буфер пикселов, поэтому для функции decodeByteArray невозможно угадать, какую ширину используют ширина, высота и цвет. Поэтому я пробовал это, и он работал:

//Create bitmap with width, height, and 4 bytes color (RGBA)    
Bitmap bmp = Bitmap.createBitmap(imageWidth, imageHeight, Bitmap.Config.ARGB_8888);
ByteBuffer buffer = ByteBuffer.wrap(mBitmaps.get(minIndex).buffer);
bmp.copyPixelsFromBuffer(buffer);

Отметьте https://developer.android.com/reference/android/graphics/Bitmap.Config.html для разных цветовых опций

  • 2
    что такое mBitmaps?
  • 0
    что такое mBitmaps и minIndex пожалуйста? предоставить полный ответ @ user924
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню