Redimensionar la imagen eficiente de la memoria en Android

Estoy tratando de reducir el tamaño de las imágenes recuperadas de la cámara (tan ~ 5-8 mega píxeles) a uno aa pocos tamaños más pequeños (el más grande es 1024×768). Intenté el código siguiente pero consigo constantemente un OutOfMemoryError .

 Bitmap image = BitmapFactory.decodeStream(this.image, null, opt); int imgWidth = image.getWidth(); int imgHeight = image.getHeight(); // Constrain to given size but keep aspect ratio float scaleFactor = Math.min(((float) width) / imgWidth, ((float) height) / imgHeight); Matrix scale = new Matrix(); scale.postScale(scaleFactor, scaleFactor); final Bitmap scaledImage = Bitmap.createBitmap(image, 0, 0, imgWidth, imgHeight, scale, false); image.recycle(); 

Parece que el OOM sucede durante el createBitmap . ¿Hay una manera más eficiente de la memoria de hacer esto? Tal vez algo que no me obligue a cargar todo el original en la memoria?

Cuando decodifica el mapa de bits con BitmapFactory, pase un objeto BitmapFactory.Options y especifique inSampleSize. Esta es la mejor manera de ahorrar memoria al decodificar una imagen.

Aquí hay un código de ejemplo Extraño problema de memoria al cargar una imagen en un objeto Bitmap

¿Está tomando la fotografía con la cámara dentro de su aplicación? Si es así, debe establecer el tamaño de la imagen a uno más pequeño en el primer lugar cuando se capturan a través de android.hardware.Camera.Parameters.setPictureSize

Esta es una pregunta similar que he respondido y mostrar cómo hacer para cargar dinámicamente el tamaño de imagen adecuado.

Fuera de la memoria de excepción + análisis de volcado de archivos hprof

  • Asegúrese de que el área del mapa de bits sea transparente al tocar
  • ¿Cómo abrir un archivo JPG como un BITMAP con el JPG almacenado en el SDCARD?
  • Cómo almacenar en caché los mapas de bits en la memoria nativa
  • Reducir el tamaño de un mapa de bits a un tamaño especificado en Android
  • SQLite - ¿Es posible insertar un BLOB a través de la instrucción insert?
  • Pasar una imagen de mapa de bits de una actividad a otra
  • Actualizar / cambiar el mapa de bits en caché utilizando Picasso y OkHttp
  • ¿Cómo obtener una resolución completa y datos de imagen sin comprimir con la cámara Android?
  • Cómo capturar los marcos de imagen de vista previa desde la aplicación de cámara en la programación de Android?
  • Cómo llenar el color en la imagen en el área en particular?
  • Dibujo de mapa de bits de mosaico con alineación inferior
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.