Android:从文件对象获取位图时抛出OutOfMemory异常

时间:2017-11-15 06:58:55

标签: java android arrays bitmap out-of-memory

我正在尝试在某些设备中从文件加载位图图像,我的代码工作正常,但在另一台设备上,它会提供OutOfMemory异常。

String filePath  = mediaCursor.getString(mediaCursor.getColumnIndex(MediaStore.Images.Thumbnails.DATA));

fileName.add(filePath);

File file = new File(filePath);
Bitmap myBitmap = BitmapFactory.decodeFile(file.getAbsolutePath());
bitmapArray.add(myBitmap);

1 个答案:

答案 0 :(得分:0)

您可以找到位图的大小:

BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
BitmapFactory.decodeFile(file.getAbsolutePath(), options);
int imageHeight = options.outHeight;
int imageWidth = options.outWidth;

然后通过设置sampleSize:

将其压缩到所需的大小
options = new BitmapFactory.Options();
options.inSampleSize = desired_scale_value;
Bitmap bitmap = BitmapFactory.decodeFile(file.getAbsolutePath(), options);

并且不要忘记在非ui线程中加载位图。