Necesito tomar una foto con la cámara y, dependiendo del tamaño de la imagen, rotarla antes de guardarla en la galería.Cómo trabajar con mapa de bits grande. Girar e insertar en la galería
estoy usando
Intención imageCaptureIntent = new Intent (MediaStore.ACTION_IMAGE_CAPTURE); imageCaptureIntent.putExtra (MediaStore.EXTRA_OUTPUT, uri); startActivityForResult (imageCaptureIntent, IMAGE_CAPTURE);
Para tomar la foto y guardarla en un archivo temporal.
Entonces
Bitmap bmp = BitmapFactory.decodeFile (imagePath);
String str = android.provider.MediaStore.Images.Media.insertImage (cr, bmp, name, description);
Para guardarlo.
Este es el código i intentado utilizar para hacer girar el mapa de bits
matriz Matrix = new Matrix();
matrix.postRotate (180);
Bitmap x = Bitmap.createBitmap (bmp, 0, 0, bmp.getWidth(), bmp.getHeight(), matriz, verdadero);
android.provider.MediaStore.Images.Media.insertImage (cr, x, name, description);
El problema es que recibo una OutOfMemoryException.
¿Hay una mejor manera de manejar los mapas de bits para evitar romper la memoria?
~ Gracias de antemano, que se refiere a
bmp.recycle() no ayuda aquí porque realmente puede hacerlo bien DESPUÉS de atrapar OOM. Quiero decir después de rotar bitmap y guardarlo. Sin embargo, la OOM probablemente llegue en el momento de rotación ya que tiene que mantener 2 mapas de bits iguales en la memoria RAM allí. – Stan