我正在使用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
compileSdkVersion
和targetSdkVersion
是26,minSdkVersion
是23,并且设备运行的是Android 6.0。