【问题标题】:Converting byte[] to Bitmap not working - Null pointer exception将字节 [] 转换为位图不起作用 - 空指针异常
【发布时间】:2016-09-20 08:26:52
【问题描述】:

当我执行 bitmap.getHeight();我得到了一个 nullPointerException。这就是我尝试获取位图的方式:

在我的 json 中:"pic":"iVBORw0KGgoAAAANSUhEUgAAAgAAAAGACAIAAABUQk3......."

我从 json 中检索到以下内容:

byte[] decode = Base64.decode(jsonObj.getString("pic"), Base64.DEFAULT);
Log.i("size",decode.length+""); //65535
Bitmap pic = getImage(decode);

public static Bitmap getImage(byte[] image) {
    BitmapFactory.Options options = new BitmapFactory.Options();
    options.inPreferredConfig = Bitmap.Config.ARGB_8888;
    return BitmapFactory.decodeByteArray(image, 0, image.length,options);
}

但我无法显示图像。 有什么想法吗?

【问题讨论】:

  • 您的“位图”变量到底在哪里,您在哪里执行“getHeight()”?
  • 什么是堆栈跟踪?请始终使用堆栈跟踪发布。
  • 我的 Bitmap 变量是 pic,无论我尝试用它做什么操作都会给我 nullpointerexception。感谢 Arif,当尝试转换从本地数据库中检索 Blob 的位图时,该链接将非常有用,但目前还没有为我提供解决方案。

标签: android base64 android-bitmap


【解决方案1】:

错误必须在BitmapFactory.decodeByteArray 内,并且很可能问题的根源是不受支持的图像格式。检查您是否通过了 base64 编码的 jpeg、png、gif 或 bmp。

另外,如果你得到 65535 作为decode 的大小 - 这是非常可疑的。也许数据在数据库中被修剪(如果 blob 大小限制为 65535)或其他地方。

【讨论】:

  • 这就是问题所在,我不能超过 65KB 来存储...我需要先压缩。谢谢。
  • Check that you pass base64 encoded jpeg, png, gif or bmp。不,当然不是 base64 编码的。而且我认为也不支持gif和bmp。
  • 当然可以,因为代码中调用了Base64.decode
  • 嗯.. 这对我来说是新的。从来没有见过这样做的。很抱歉造成混乱。
  • 因为我很难相信这一点,所以我做了一个测试,并对一个字节数组进行了 base64 编码,BitmapFactory.decodeByteArray() 为其提供了一个完美的位图。编码后失败。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-25
相关资源
最近更新 更多