Android 如何从字节[]创建可绘制文件?(安卓)

Android 如何从字节[]创建可绘制文件?(安卓),android,bytearray,type-conversion,drawable,Android,Bytearray,Type Conversion,Drawable,我有一个字节数组,我需要将其转换为Android Drawable。如何执行此转换 以下是我尝试过但没有成功的东西: byte[] b = getByteArray(); ByteArrayInputStream is = new ByteArrayInputStream(b); Drawable drw = Drawable.createFromStream(is, "articleImage"); drw总是空的 编辑: 我的字节[]实际上已损坏/不完整,这就是问题所在。您真的需要可绘制的

我有一个字节数组,我需要将其转换为Android Drawable。如何执行此转换

以下是我尝试过但没有成功的东西:

byte[] b = getByteArray();
ByteArrayInputStream is = new ByteArrayInputStream(b);
Drawable drw = Drawable.createFromStream(is, "articleImage");
drw总是空的

编辑:


我的字节[]实际上已损坏/不完整,这就是问题所在。

您真的需要可绘制的吗?如果位图适合,则:

Bitmap bitmap = BitmapFactory.decodeStream(is);

如果您的
字节[]b
包含图像数据,则您也可以尝试此操作

 Drawable image = new BitmapDrawable(BitmapFactory.decodeByteArray(b, 0, b.length));
编辑

现在不推荐使用无资源的BitmapDrawable构造函数,请改用此构造函数:

Drawable image = new BitmapDrawable(getResources(),BitmapFactory.decodeByteArray(b, 0, b.length));

试试这个,让我知道发生了什么,

你确信<代码> b <代码>包含有意义的数据吗?你的字节[]被损坏了,可能是从一个无用的转换为一个字符串,如果你在中间改变编码,它不是幂等的。它不再返回null,它正在返回一个可绘制的对象,但当我在屏幕上打印时,没有显示任何图片。实际上,我在数据库中有一个Blob,我将它转换为字符串,然后转换为byte[],然后转换为Drawable。找出错误的位置将是一件痛苦的事情。如果您使用直接字节数组来创建drawable,而不将其转换为字符串,又如何呢?并且还将字节数组直接存储在sqlite db中作为blob类型,试试这个,看看会发生什么。。。