【问题标题】:Android: Get height/width from byte array or fileAndroid:从字节数组或文件中获取高度/宽度
【发布时间】:2013-05-31 12:59:34
【问题描述】:

我有一个存储为字节数组的图像(也可以作为 .jpg 从 Android 目录访问),我正在尝试获取图像的宽度和高度。我尝试使用 javax.imageio 但是 Dalvik 不支持这个库,所以我选择使用 Bitmap。有人可以帮我从这里出去吗?我不断收到空指针异常。

public int getWidth(byte[] image) throws IOException{
    Bitmap bitmapImage = BitmapFactory.decodeFile(image.toString());
    int imageWidth = bitmapImage.getWidth();

    return imageWidth;
}

干杯。

【问题讨论】:

  • 能否请您说明异常的堆栈跟踪?如果您不这样做,我们将无法帮助您。
  • E/AndroidRuntime(14818): 致命异常: main E/AndroidRuntime(14818): java.lang.NullPointerException at MainActivity.getWidth(MainActivity.java:336)
  • 第 336 行是哪一行?
  • int imageWidth = bitmapImage.getWidth();
  • 我想通了。看我的回答。

标签: java android bitmap height width


【解决方案1】:

您可以尝试使用decodeByteArray(image) 而不是decodeFile(new String(image))。留作将来参考的信息:

toString() 不适用于数组(它返回一些随机字符串)。由于您将无效字符串传递给decodeImage,因此它返回null 以指示未找到它。因此,如果您在其上调用方法,则会生成NullPointerException。如果字节数组是使用字符集编码的,而不是使用image.toString(),而是使用正确解码字节数组的new String(image)

【讨论】:

  • 啊,我明白了。我已将代码更改为: Bitmap bitmapImage = BitmapFactory.decodeFile(new String(image));但仍然在同一行上出现空指针异常 - int imageWidth = bitmapImage.getWidth();
  • @LBran 你知道image 使用什么字符集吗?
  • ...它...它起作用了。位图 bitmapImage = BitmapFactory.decodeByteArray(image, 0, image.length);谢谢!!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-15
相关资源
最近更新 更多