【发布时间】:2012-07-27 09:58:33
【问题描述】:
如何从相机中获取具有特定(内存友好)大小的位图?
我正在启动相机意图:
Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
cameraIntent.putExtra("return-data", true);
photoUri = Uri.fromFile(new File(Environment.getExternalStorageDirectory(), "mytmpimg.jpg"));
cameraIntent.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, photoUri);
startActivityForResult(cameraIntent, REQUEST_CODE_CAMERA);
我在这里处理结果:
// Bitmap photo = (Bitmap) intent.getExtras().get("data");
Bitmap photo = getBitmap(photoUri);
现在,如果我使用注释行 - 直接获取位图,我总是得到一个 160 x 120 的位图,这太小了。如果我使用我找到的一些标准内容(方法 getBitmap)从 URI 加载它,它会加载一个 2560 x 1920 位图(!),这会消耗近 20 mb 内存。
我如何加载 480 x 800(与相机预览显示的尺寸相同)?
无需将 2560 x 1920 加载到内存中并按比例缩小。
【问题讨论】:
-
可能,但是没有办法让我在拍照时在屏幕上看到...?我不再需要任何东西了。
-
Ben Rujil 的链接指向我所知道的最佳答案。您的选择基本上是 Intent 中的缩略图或 File 中的原始分辨率照片。不让相机应用以较低的分辨率保存照片,这是您的选择。
标签: android memory bitmap camera