如何将字节数组转换为位图

我想在SQLite DataBase存储图像。 我试图存储它使用BLOBString ,在这两种情况下,它存储图像,可以检索它,但是当我把它转换为Bitmap使用BitmapFactory.decodeByteArray(...)它返回null。

我已经使用这个代码,但是它返回null

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

试试这个:

 Bitmap bitmap = BitmapFactory.decodeFile("/pathhttp://img.dovov.comimage.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的答案不适合我。 当我做的时候我只是空了:

 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以获取不同的颜色选项;