我有一个Android应用程序调用本机相机应用程序拍照并返回图像以进一步操作。我的问题是,如果相机设置为2(+)百万像素,我会遇到内存泄漏。理想情况下,我希望它设置为最低(VGA),因为此应用程序不关心图像质量。
我的应用程序是否有办法更改本机设备的相机应用程序的设置?这是我正在使用的代码:
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
mImageCaptureUri =
Uri.fromFile(new file(Environment.getExternalStorageDirectory(),
"fname_" + String.valueOf(System.currentTimeMillis()) + ".jpg"));
intent.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, mImageCaptureUri);
任何帮助都将不胜感激。
答案 0 :(得分:0)
不幸的是,没有办法告诉相机应用程序你想要拍摄的照片分辨率。
但是你可以通过获取一些位图功能(例如第二选项更适合你的需要)在你的应用中自己做些什么。
下采样。样本量应大于1.尝试2和4。
BitmapFactoryOptions.inSampleSize = sampleSize;
从原始位图创建一个具有所需大小的新位图..
// calculate the change in scale
float scaleX = ((float) newWidth_that_you_want) / originalBitmap.width();
float scaleY = ((float) newHeight_that_you_want) / originalBitmap.height();
// createa matrix for the manipulation
Matrix matrix = new Matrix();
matrix.postScale(scaleX , scaleY );
Bitmap newBitmap = Bitmap.createBitmap(originalBitmap, 0, 0, width, height, matrix, true);
//since you don't need this bitmap anymore, mark it so that GC can reclaim it.
//note: after recycle you should not use the originalBitmap object anymore.
//if you do then it will result in an exception.
originalBitmap.recycle();