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

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

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

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

2 ответов


просто попробуйте это:

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 если изображение не удалось декодировать.


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

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

в моем случае bitmapdata имеет только буфер пикселей, поэтому для функции 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(bitmapdata);
bmp.copyPixelsFromBuffer(buffer);

Регистрация https://developer.android.com/reference/android/graphics/Bitmap.Config.html различные варианты цвета