¿Por qué es el tamaño de la imagen y la memoria requerida para mostrarla diferente?


-1

Aprendí de un poste de desbordamiento de pila que la memoria requerida para mostrar una imagen y el tamaño de la imagen es igual a

4 * image dimensions

Tengo algunas imágenes de 800x800 y veo que su tamaño es de aproximadamente cien KB, lo que creo que es bastante pequeño. Pero de acuerdo con la fórmula anterior, se necesitan más de 2 MB para mostrarlo.

La publicación SO dice que debido a que el mapa de bits utiliza colores ARGB, cada píxel requiere 4 bytes de espacio de almacenamiento. Por eso la fórmula es 4 * Dimensiones de la imagen. ¡Pero veo que solo se requieren 100 KB de espacio para almacenar la imagen!

¿La computadora usa un método diferente para almacenar la imagen? ¿1 píxel todavía necesita 4B para ser almacenado? ¿Cómo está pasando esto?


Y dónde ¿Ves que su tamaño es de unos cien kB?
Run CMD

En su ventana de propiedades.
Sweeper

¿Quieres decir, en disco?
Run CMD

Es un hecho que la respuesta que cita da una mala recomendación. RGB888 es su primera opción si no necesita transparencia, no ARGB. Especialmente en un dispositivo móvil. Ahorra 25% de memoria en comparación con ARGB y también, si apila Android View s, añadiendo transparencia ralentizará las cosas.
Run CMD

Respuestas:


3

IrfanView Puede ayudar a ver rápidamente la memoria utilizada:
(ver el cálculo de la memoria)

enter image description here

ANCHURA X ALTURA X (BITS POR PIXEL) = memoria necesaria para cargar la imagen completa

¡Aclamaciones!


2

Tu imagen está comprimida (por ejemplo, con jpeg o png ). Si almacena la imagen en un formato no comprimido ( tiff sin zip compresión) obtendría ese tamaño en el disco, también.


La Q pregunta cómo está sucediendo esto.
Run CMD

1
@ClassStacker lo sé. Y mi respuesta es with compression
Germar

Sí ... JPG / JPEG y PNG utilizan métodos de compresión con pérdida
pun

1
@ The_IT_Guy_You_Don't_Like PNG utiliza métodos de compresión con pérdida? ¿Quién te dijo estas tonterías?
Run CMD

@ The_IT_Guy_You_Don't_Like jpeg usa una compresión con pérdida. PNG no tiene pérdidas
Germar

2

La memoria requerida para almacenar una imagen puede ser menor que la memoria requerida para mostrarla. Por ejemplo, si la imagen es un rectángulo verde de 80x80, puede almacenarla como el equivalente de "80 por 80 rectángulo verde". Pero para mostrarlo, necesitas 1600 puntos verdes, cada uno de los cuales va a ocupar algo de espacio.


¿Quieres guardar un cuadrado de 80x80? Solo necesita almacenar un píxel de verde y algunos metadatos que dicen que es 80x80?
Sweeper

@Sweeper It puede hacer eso para almacenarlo. Pero no puede hacer eso para mostrarlo.
David Schwartz
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.