如何将字节数组中的图像文件数据转换为位图?

我想在 SQLite DataBase中存储图像。 我尝试使用 BLOBString存储它,在这两种情况下,它都存储 图像,可以检索它,但当我转换为 Bitmap使用 返回空值。

我使用了这段代码,但它返回 null

Bitmap  bitmap = BitmapFactory.decodeByteArray(blob, 0, blob.length);
236800 次浏览

试试这个:

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

如果无法解码图像,则返回解码后的 Bitmapnull

Uttam 的答案对我不起作用,当我这样做的时候我得到了 null:

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

在我的示例中,位图数据只有像素的缓冲区,因此函数 decdeByteArray 不可能猜测宽度、高度和颜色位所使用的位。所以我尝试了这个,它起作用了:

//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不同的颜色选项