如何将字节数组转换为Bitmap

时间:2011-10-01 13:08:05

标签: android sqlite bitmap bytearray

我想将图片存储在SQLite DataBase中。 我尝试使用BLOBString存储它,在两种情况下都会存储它 图像并可以检索它,但当我使用时将其转换为Bitmap BitmapFactory.decodeByteArray(...)它返回null。

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

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

2 个答案:

答案 0 :(得分:260)

试试这个:

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

答案 1 :(得分:22)

Uttam的答案对我没有用。我做的时候我就是空的:

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是否有不同的颜色选项