当将BitmapFactory.decodeFile与inJustDecodeBounds = true一起使用时,为什么outHeight / outWidth -1?

时间:2018-07-27 20:51:40

标签: android

我正在使用MediaStore.ACTION_IMAGE_CAPTURE将相机图像保存到本地文件。图片可能很大,因此我试图确定尺寸而不将其加载到内存中,然后根据Android Developers documentation将其缩小到可接受的尺寸。

File file = new File(filePath);
if (!file.exists())
    throw new FileNotFoundException(filePath);

BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
BitmapFactory.decodeFile(filePath, options);
if (options.outHeight == -1 || options.outWidth == -1)
    throw new PhotoReadException("BitmapFactory.decodeFile failed to set image bounds.");

最后一行的PhotoReadException每次都会在同一设备上被几乎抛出,但偶尔会起作用。我无法在Logcat中找到任何东西来指示失败的原因。

filePath是使用Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES)生成的,示例值为/storage/emulated/0/Pictures/Redacted/20180727_203746.jpg

compileSdkVersiontargetSdkVersion是26,minSdkVersion是23,并且设备运行的是Android 6.0。

0 个答案:

没有答案