Je veux stocker une image dans SQLite DataBase
. J'ai essayé de le stocker en utilisant BLOB
et String
, dans les deux cas, il stocke l'image et peut le récupérer, mais lorsque je le convertis en Bitmap
en utilisant BitmapFactory.decodeByteArray(...)
, il renvoie null.
J'ai utilisé ce code, mais il renvoie null
Bitmap bitmap = BitmapFactory.decodeByteArray(blob, 0, blob.length);
Essayez ceci:
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
est le tableau d'octets, alors obtenir Bitmap
se fait comme suit:
Bitmap bitmap = BitmapFactory.decodeByteArray(bitmapdata, 0, bitmapdata.length);
Renvoie le Bitmap
décodé, ou null
si l'image n'a pas pu être décodée.
La réponse d'Uttam n'a pas fonctionné pour moi. Je viens d'avoir nul quand je le fais:
Bitmap bitmap = BitmapFactory.decodeByteArray(bitmapdata, 0, bitmapdata.length);
Dans mon cas, bitmapdata n'a que la mémoire tampon des pixels, il est donc impossible pour la fonction decodeByteArray de deviner quelle largeur, hauteur et quelle couleur utiliseront les bits. Alors j'ai essayé ça et ça a marché:
//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);
Vérifiez https://developer.Android.com/reference/Android/graphics/Bitmap.Config.html pour différentes options de couleur