Tamaño de configuración del mapa de bits: optimización de la memoria de Android cinco: optimización del mapa de bits
C#wpfBitmapImage obtiene una imagen de tamaño de píxel desconocido de recursos locales Cómo configurar su objeto en un tamaño específico
En términos generales, un punto se identifica con precisión como 1/72 de pulgada. En WPF, la unidad independiente del dispositivo utilizada es 1/96 de pulgada
Por lo tanto, el tamaño de la imagen obtenida en el programa es un poco mayor que el tamaño de la imagen real. Después de obtener el tamaño de la imagen, realice la conversión correspondiente. para obtener la imagen, el tamaño original es: altura=altura*72/96bmp tamaño de captura de pantalla completa
800*480. Muestre el archivo de encabezado de imagen bmp de cualquier tamaño en cualquier posición, o muestre el bmp en pantalla completa 800 * 480, que es fácil de analizar. BMP (nombre completo Bitmap) es un formato de archivo de imagen estándar en el sistema operativo Windows. Se puede dividir en dos categorías: mapa de bits dependiente del vector del dispositivo (DDB) y mapa de bits no dependiente del vector del dispositivo (DIB), que se utilizan ampliamente. Optimización de memoria de Android cinco: optimización de mapa de bits
Optimización de memoria de Android uno: mecanismo de recolección de basura de Java
Optimización de memoria de Android dos: pérdida de memoria
Optimización de memoria de Android tres: memoria Detección y monitoreo de fugas
Optimización de memoria de Android cuatro: OOM
Optimización de memoria de Android cinco: optimización de mapa de bits
Relación de compresión: escala=(flaot)objetivoDensidad/densidad
targetDensity: densidad de píxeles de la pantalla del dispositivo ppp
densidad: densidad de píxeles de la carpeta correspondiente a la imagen
1), la misma imagen se coloca en diferentes recursos directorios, su resolución cambiará.
2). Cuanto mayor sea la resolución del mapa de bits, menor será el ancho y el alto después del análisis, incluso más pequeños que la imagen original (y el escalado), por lo que la respuesta de la memoria también se reduce.
3) Cuando la imagen no se coloca en ningún directorio de recursos, utiliza la resolución predeterminada mdpi: 160.
4). Cuando la resolución del directorio de recursos es consistente con la resolución de la pantalla, el tamaño de la imagen no se escalará.
El método de cálculo del mapa de bits colocado en el directorio de recursos es:
Optimizado principalmente mediante codificación, muestreo, multiplexación y área de intercambio anónimo ***
Porque La calidad de imagen de ARGB_4444 es terrible. Generalmente, si no hay requisitos de transparencia para la imagen, se puede cambiar a RGB_565, lo que ahorrará la mitad de la sobrecarga de memoria en comparación con ARGB_8888.
Entre ellos, A representa la transparencia. ; R representa rojo; G representa verde; B representa azul.
ALPHA_8 representa un mapa de bits Alpha de 8 bits, es decir, A=8. Un píxel ocupa 1 byte. No tiene color, solo transparencia.
ARGB_4444 representa un mapa de bits ARGB de 16 bits, es decir, A=4, R=4, G=4, B=4. Un píxel ocupa 4 4 4 4 = 16 bits, 2 bytes.
ARGB_8888 representa un mapa de bits ARGB de 32 bits, es decir, A=8, R=8, G=8, B=8. Un píxel ocupa 8 8 8 8 = 32 bits, 4 bytes.
RGB_565 representa un mapa de bits RGB de 16 bits, es decir, R=5, G=6, B=5. No tiene transparencia. Un píxel ocupa 5 6 5 = 16 bits, 2 bytes.
La memoria ocupada por el mapa de bits está determinada por el ancho y alto del mapa de bits y el número de bytes ocupados por cada píxel.
Comprime y establece la frecuencia de muestreo según la frecuencia de muestreo de BitmapFactory. No puede ser menor que 1. Si es 2, el ancho será la mitad del anterior, el alto será 1. /2 del anterior, y se reducirá en más de 1/4. Por analogía
La reutilización de imágenes se refiere al atributo inBitmap.
Si no usa este atributo, si carga tres imágenes, el sistema le asignará tres espacios de memoria para almacenar estas tres imágenes respectivamente.
Si usa el atributo inBitmap , Cargue tres imágenes. Estas tres imágenes apuntarán a la misma memoria sin abrir tres espacios de memoria.
Limitaciones de inBitmap:
1, 3.0-4.3
El tamaño de las imágenes reutilizadas debe ser el mismo
La codificación debe ser el mismo
2.4 o superior
El espacio reutilizado puede ser mayor o igual a
La codificación no tiene por qué ser la misma
3. WebP no es compatible
4. Reutilización de imágenes, este atributo debe establecerse en verdadero
=true
Una memoria; área abierta por el sistema Android para compartir datos entre procesos, porque esta El área de bloqueo no está limitada por el tamaño del encabezado de la aplicación, lo que equivale a omitir el Fresco de FaceBook que se aplica en la práctica por primera vez.
Restricciones: Después de la versión 5.0, el uso de memoria compartida anónima *** está restringido.
Entre SDK11-gt;18, el tamaño del mapa de bits reutilizado debe ser consistente. Por ejemplo, el tamaño de imagen asignado a inBitmap es 100-100, luego el mapa de bits recién aplicado también debe ser 100-100. . A partir del SDK19, el tamaño del mapa de bits recién aplicado debe ser menor o igual al tamaño del mapa de bits que se ha asignado. El mapa de bits recién aplicado y el mapa de bits antiguo deben tener el mismo formato de decodificación. Por ejemplo, todos son 8888. Si el mapa de bits anterior es 8888, entonces no se pueden admitir los mapas de bits de formato 4444 y 565. Podemos crear un grupo de objetos que contenga una variedad de mapas de bits reutilizables típicos, de modo que las creaciones posteriores de mapas de bits puedan encontrar "plantillas" apropiadas para su reutilización.
Los datos de píxeles de 8.0 Bitmap se almacenan en Native, ¿por qué se cambian a almacenamiento Native?
Porque 8.0*** comparte la memoria de todo el sistema, si la prueba 8.0 El teléfono móvil sigue creando mapas de bits; si el teléfono tiene 1G de memoria, su aplicación no funcionará incluso si carga 1G.
Puedes usar LRU para abrir y administrar Bitmap, establecer el valor máximo de memoria para él y reciclarlo a tiempo.
Decodificador de región de mapa de bits