【问题标题】:How to create a Drawable from byte[] ? (Android)如何从 byte[] 创建 Drawable ? (安卓)
【发布时间】:2012-01-11 12:58:04
【问题描述】:

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

这是我尝试但没有成功的方法:

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

drw 始终为空!

编辑:

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

【问题讨论】:

  • 您确定b 包含有意义的数据吗?
  • 您的 byte[] 已损坏,可能是由于无用转换为字符串,如果您在其中更改编码,则该字符串不是幂等的。

标签: android bytearray type-conversion drawable


【解决方案1】:

如果您的byte[] b 包含图像数据,那么您也可以试试这个,

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

编辑

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

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

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

【讨论】:

  • 它不再返回null,它返回一个可绘制对象,但是当我在屏幕上打印它时没有显示图片。我实际上在数据库中有一个 Blob,我将其转换为 String,然后转换为 byte[],然后转换为 Drawable。找出错误可能在哪里会很痛苦。
  • 如果您使用直接字节数组来创建可绘制对象而不将其转换为字符串..?
  • 并且还将字节数组作为blob类型直接存储在sqlite db中,试试这个,看看会发生什么......
【解决方案2】:

你真的需要 Drawable 吗?如果 Bitmap 可以适应,那么:

Bitmap bitmap = BitmapFactory.decodeStream(is);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-16
    • 1970-01-01
    • 2010-12-06
    • 1970-01-01
    • 2017-03-08
    相关资源
    最近更新 更多