gpt4 book ai didi

java - Android 将相机图像加载为位图

转载 作者:搜寻专家 更新时间:2023-11-01 09:18:18 24 4
gpt4 key购买 nike

我正在使用 BitmapFactory.decodeFile 将图像位图加载到我的应用程序中。但是,该函数在大图像(例如来自相机的图像)上返回 null。文件路径肯定是正确的,我就是不明白为什么会返回null。我尝试了 super 采样,但它似乎没有帮助。

有谁知道它为什么会这样做,或者我如何才能更轻松地将相机拍摄的图像加载到位图中?

这是我使用的代码:

public static Bitmap loadBitmap(String filePath){
Bitmap result = BitmapFactory.decodeFile(filePath);

if(result == null){
if(filePath.contains(".jpg") || filePath.contains(".png")){
//This is the error that occurs when I attempt to load an image from the Camera DCIM folder or a large png I imported from my computer.
Utils.Toast("Could not load file -- too big?");
} else {
Utils.Toast("Could not load file -- image file type is not supported");
}
}
return result;
}

最佳答案

您需要提供有关问题的更多信息,例如您正在使用的代码 fragment 。如果你想知道BitmapFactory.decodeFile方法什么时候/为什么会返回null,你可以直接阅读它的源代码:http://casidiablo.in/BitmapFactory

例如,导致 BitmapFactory.decodeFile 返回 null 的原因之一是打开文件时出现问题。奇怪的是,开发人员没有记录任何关于此类问题的信息……看看评论“什么都不做。如果异常发生在打开时,bm 将为空。”

public static Bitmap decodeFile(String pathName, Options opts) {
Bitmap bm = null;
InputStream stream = null;
try {
stream = new FileInputStream(pathName);
bm = decodeStream(stream, null, opts);
} catch (Exception e) {
/* do nothing.
If the exception happened on open, bm will be null.
*/
} finally {
if (stream != null) {
try {
stream.close();
} catch (IOException e) {
// do nothing here
}
}
}
return bm;
}

如您所见,BitmapFactory.decodeFile 不能独立工作...但它使用了 BitmapFactory 类的一些其他方法(例如, BitmapFactory.decodeStreamBitmapFactory.nativeDecodeStreamBitmapFactory.finishDecode 等)。问题可能出在其中一种方法上,所以如果我是你,我会尝试阅读并理解它们的工作原理,以便我知道它们在哪些情况下返回 null。

关于java - Android 将相机图像加载为位图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2947253/

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