mejor jpg imagen formatos formato calidad image compression jpeg lossy-compression

imagen - jpg



¿Existe una calidad, tamaño de archivo u otro beneficio para los tamaños JPEG que sean múltiplos de 8px o 16px? (5)

El proceso de codificación de compresión JPEG divide una imagen determinada en bloques de 8x8 píxeles, trabajando con estos bloques en futuras compresiones con y sin pérdida. [fuente]

También se menciona que si la imagen es un bloque múltiple de 1MCU (definido como una unidad codificada mínima, ''generalmente 16 píxeles en ambas direcciones'') se pueden realizar alteraciones sin pérdida en un archivo JPEG. [fuente]

Estoy trabajando con imágenes de productos y me gustaría saber si, y cuánto beneficio puede obtenerse al usar múltiplos de 16 en el tamaño de mi imagen final (por ejemplo, usando una imagen con un tamaño de 480px por 360px) contra un no múltiplo de 16 (como 484x362). En este ejemplo, no estoy interesado en más alteraciones, edición o recompresión de la imagen final.

Para tratar de acercarme a una respuesta específica donde sé que debe haber generalidades en gran medida: una imagen de 480x360 que es de 64k y se guarda con la máxima calidad en Photoshop [ejemplo] :

  • ¿Puedo esperar alguna pérdida de calidad de una imagen que es 484x362
  • ¿Qué cantidad de adición de tamaño de archivo puedo esperar? (Para este ejemplo, el espacio adicional sería píxeles blancos)
  • ¿Hay alguna otra desventaja de crecer más que la grilla de 8px?

Sé que es arbitrario usar ese ejemplo específico, pero aún sería útil (para mí y potencialmente para cualquier otra persona que pondere el tamaño de una imagen) entender qué nivel de compromiso me enfrentaría al romper la grilla que no es de 8px.

La cuestión clave aquí es un debate que he tenido es si las imágenes divisibles de 8 píxeles son de mayor calidad que las imágenes que no son divisibles por 8 píxeles.


Las dimensiones de la imagen que son múltiplos de 8 o 16 no afectarán mucho el tamaño del disco, pero puede obtener un ahorro considerable si puede alinear los contenidos visuales en la cuadrícula de 8x8 píxeles, como si hubiera un patrón repetitivo o textura en la imagen.


Un JPG con tamaños multiplicados por 8 también se puede rotar / voltear sin pérdida de calidad. Por ejemplo, gthumb puede hacer esto en Linux.


8 píxeles es el límite. La razón es porque las imágenes JPEG son simplemente una matriz de bloques 8x8 DCT; si la resolución de la imagen no es mod8 en ambas direcciones, el codificador debe rellenar los lados hasta la siguiente resolución mod8. Esto en la práctica no es muy costoso en cuanto a bits; lo que es mucho peor son los casos en que una imagen tiene líneas negras definidas (como una imagen de buzón) que no se encuentran en los límites del bloque. Esto es especialmente problemático en la codificación de video. La razón de que esto sea un problema es que la transformación de frecuencia de una línea nítida es una distribución gaussiana de coeficientes, lo que da como resultado una enorme cantidad de bits para codificar.

Para los curiosos, el método más común de relleno de bordes en la compresión interna (como las imágenes JPEG) es reflejar las líneas de píxeles antes del borde. Por ejemplo, si necesita rellenar tres líneas y la línea X es el borde, la línea X + 1 es igual a la línea X, la línea X + 2 es igual a la línea X-1, y la línea X + 3 es igual a la línea X- 2. Esto minimiza con bastante efectividad el costo en los coeficientes de transformación de las líneas adicionales.

Sin embargo, en la intercodificación, los algoritmos de relleno generalmente solo duplican la última línea, porque el método espejo no funciona bien para la intercompresión, como en la compresión de video.


En ocasiones, necesita utilizar límites de 16 píxeles en lugar de 8 debido al submuestreo; cada segundo píxel se descarta durante el proceso de codificación, y esos bloques DCT de 8x8 comenzaron como 16x16 y se descodificarán de nuevo a 16x16. Esto no será un problema en la configuración de más alta calidad.


Lo que dijo Tometzky Si no tiene el múltiplo correcto, los algoritmos de inversión y rotación sin pérdida no funcionan. Esto se debe a que el relleno en la parte derecha / inferior que se puede ignorar de forma segura ahora termina en la parte superior / izquierda, donde no puede.