gpt4 book ai didi

android - BitmapFactory.decodeFile 返回 null

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:58:38 25 4
gpt4 key购买 nike

我将使用 Bitmap.compress() 方法压缩图像。

但是当我使用 bitmap = BitmapFactory.decodeFile() 获取 Bitmap 时,我得到了一个 null 对象,并且该方法没有显示任何异常(exception)。

这是我的代码

public static File compressImage(String imagePath) throws IOException {

// Get bitmap
BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
Bitmap bitmap = BitmapFactory.decodeFile(imagePath, options);

// Get bitmap output stream
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, byteArrayOutputStream);

......

当代码在最后一行运行时,我得到一个 NullPointerException :

java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.graphics.Bitmap.compress(android.graphics.Bitmap$CompressFormat, int, java.io.OutputStream)' on a null object reference

然后我在 Debug模式下运行我的代码,结果我从 BitmapFactory.decodeFile 方法中得到了一个 null 对象。

参数imagePath

/storage/emulated/0/DCIM/Camera/IMG_20160610_195633.jpg

这看起来不错。

这段代码在另一个 Activity 中运行良好,但是当我将它复制到我尝试压缩和上传图像的异步线程时,它崩溃了。这有没有可能是因为异步线程的事情?或者其他我没有注意到的东西?

最佳答案

从您的代码中删除以下内容:

options.inJustDecodeBounds = true;

来自 inJustDecodeBounds 的文档:

If set to true, the decoder will return null (no bitmap), but the out... fields will still be set, allowing the caller to query the bitmap without having to allocate the memory for its pixels.

inJustDecodeBounds 对于有效加载大型 Bitmap 很有用,因为您可以读取它们的尺寸而无需为它们分配内存,尽管它在您的代码中没有任何用途.

关于android - BitmapFactory.decodeFile 返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37851858/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com