从相机获取全尺寸图像,内存问题

时间:2016-11-13 20:01:23

标签: android memory-management camera photos

我正在使用这行代码来获取完整大小的图像,我没有在任何视图上设置此图像,执行时仍然需要大量的RAM,大约110-120m,任何解决方案?我甚至尝试使用Async Task在Backgroung线程中运行此代码。图片分辨率为4008 * 5344。

Bitmap image = MediaStore.Images.Media.getBitmap(getContentResolver(),Uri.parse(mCurrentPhotoPath));

在开发者网站上给出的以下方法,给我Null位图。

private void setPic() {
// Get the dimensions of the View
int targetW = mImageView.getWidth();
int targetH = mImageView.getHeight();

// Get the dimensions of the bitmap
BitmapFactory.Options bmOptions = new BitmapFactory.Options();
bmOptions.inJustDecodeBounds = true;
BitmapFactory.decodeFile(mCurrentPhotoPath, bmOptions);
int photoW = bmOptions.outWidth;
int photoH = bmOptions.outHeight;

// Determine how much to scale down the image
int scaleFactor = Math.min(photoW/targetW, photoH/targetH);

// Decode the image file into a Bitmap sized to fill the View
bmOptions.inJustDecodeBounds = false;
bmOptions.inSampleSize = scaleFactor;
bmOptions.inPurgeable = true;

Bitmap bitmap = BitmapFactory.decodeFile(mCurrentPhotoPath, bmOptions);
mImageView.setImageBitmap(bitmap);

}

0 个答案:

没有答案