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?
- Leer en JPG como RGB888 en Android
- Cómo blit () en android?
- Cómo guardar una imagen png en android
- Error android.graphics.Canvas.throwIfRecycled when overlaying bitmaps
- Cómo: Parcelar un mapa de bits en Android
- Android Gauge Animation Pregunta
- ¿Cómo evitar OutOfMemory para TextView que contiene ilimitado ImageSpans?
- Problemas de memoria en fragmentos que muestran imágenes
- Android Camera Intent: ¿cómo obtener una foto de tamaño completo?
- Decodificación de mapas de bits en Android con el tamaño correcto
- Measure () no funciona correctamente con diseños dinámicos y textView - Android
- Fuera de error de memoria que se ocupa de mapas de bits grandes y el ciclo de vida de actividad de Android
- Cómo establecer el tamaño de mapa de bits en recurso extraíble?
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
- Enviando intentos de correo electrónico HTML sin tener <img> eliminado?
- Asegúrese de que SQLite en Android utiliza UTF-8 como un conjunto de caracteres