Как преобразовать массив байтов в растровое изображение
Я хочу сохранить изображение в 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
если изображение не удалось декодировать.
ответ Уттама не сработал для меня. Я просто получил 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 для различных вариантов цвета