¿Cómo obtengo un mapa de bits con un cierto tamaño (compatible con la memoria) de la cámara?Tamaño del mapa de bits devuelto por la cámara a través de intento?
estoy empezando una cámara con la intención:
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);
manejo el resultado aquí:
// Bitmap photo = (Bitmap) intent.getExtras().get("data");
Bitmap photo = getBitmap(photoUri);
Ahora si uso la línea comentada - obtener el mapa de bits directamente, consigo siempre una 160 x 120 mapa de bits, y eso es demasiado pequeño. Si lo cargo desde el URI usando algunas cosas estándar que encontré (método getBitmap), carga un mapa de bits de 2560 x 1920 (!) Y eso consume casi 20 mb de memoria.
¿Cómo cargo, digamos 480 x 800 (el mismo tamaño que la vista previa de la cámara me muestra)?
Sin tener que cargar el 2560 x 1920 en la memoria y reducir la escala.
¿Esto ayuda? http://stackoverflow.com/questions/3331527/android-resize-a-large-bitmap-file-to-scaled-output-file –
Probablemente, pero ¿no hay una manera de obtener lo que veo en la pantalla? cuando tomas la foto ...? No necesito nada más. – Ixx
El enlace de Ben Rujil apunta a la mejor respuesta que conozco. Su elección es básicamente una miniatura en Intent o una foto de resolución nativa en Archivo. La opción de que la aplicación de la cámara no se guarde para guardarla con una resolución más baja no está disponible. – Sparky