Cómo convertir una matriz de bytes a Bitmap

Quiero almacenar imágenes en SQLite DataBase . Intenté almacenarlo usando BLOB y String , en ambos casos almacenó la imagen y puede recuperarla, pero cuando la convierto en Bitmap usando BitmapFactory.decodeByteArray(...) devuelve null.

He usado este código, pero devuelve nulo

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

Solo prueba esto:

 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(); 

Si bitmapdata es la matriz de bytes, entonces obtener Bitmap se hace así:

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

Devuelve el Bitmap decodificado, o null si la imagen no pudo decodificarse.

La respuesta de Uttam no funcionó para mí. Acabo de obtener nulo cuando lo hago:

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

En mi caso, bitmapdata solo tiene el búfer de los píxeles, por lo que es imposible para la función decodeByteArray adivinar qué ancho, altura y los bits de color utilizan. Así que probé esto y funcionó:

 //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); 

Consulte https://developer.android.com/reference/android/graphics/Bitmap.Config.html para ver las diferentes opciones de color