将byte[]转换为Android图像

21

我的问题如下:

我使用blob格式将一些图片存储到sqlite数据库中,好像可以正常工作。现在我想从数据库中获取这些图片并将它们转换为图像... 为了使问题更复杂,它们的格式是可变的(png,jpg,可能还有其他格式,我不确定)。

在Android中有没有一种方法可以实现这样的操作?

谢谢!

3个回答

53
使用 BitmapFactory.decodeByteArray() 方法:
byte[] blob=c.getBlob("yourcolumnname");
Bitmap bmp=BitmapFactory.decodeByteArray(blob,0,blob.length);
ImageView image=new ImageView(this);
image.setImageBitmap(bmp);

也要看看这个帖子。


这正是我所做的,但我使用了drawable,所以我添加了一个转换,但我认为我不需要它。感谢大家的帮助。感谢您在此提供详细的解释。 - Sephy
如果无法解码图像,则decodeByteArray方法将返回null;请检查您存储到数据库的代码。 - systempuntoout
1
这在摩托罗拉上不起作用!decodeByteArray说我应该发送有效数据,而我发送的不是图像数据。为什么?如何解决? - Toshe

4

谢谢提示,我会仔细查看,如果找不到,我会再回来问您。 - Sephy

4

我更喜欢直接将字节数组转换为Drawable。这是Android中最好的格式。过去生成的Bitmaps存在内存泄漏问题。

Drawable d = Drawable.createFromStream(new ByteArrayInputStream(ARRAY_BYTES), null);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接