¿Qué es JPEG?

JPEG es un método de compresión con pérdida ampliamente compatible para fotografías ráster y otras imágenes de tono continuo. La calidad de compresión es ajustable, pero el encoding JPEG habitual no proporciona transparencia.

Cómo funciona JPEG

El proceso JPEG habitual divide cada componente de color en bloques de 8×8, aplica a cada bloque una transformada discreta del coseno, divide los coeficientes resultantes por valores de una tabla de cuantización, redondea los resultados a enteros y les aplica codificación entrópica. La cuantización es el paso que descarta detalles: las tablas más gruesas reducen el tamaño del archivo a costa de errores visibles, sobre todo desenfoque y halos de color alrededor del texto y los bordes definidos. Los codificadores también suelen almacenar los dos componentes de crominancia a una resolución reducida, lo que constituye una segunda fuente de pérdida independiente. El estándar JPEG define los datos comprimidos y su sintaxis de marcadores, pero deja fuera de su alcance el espacio de color y otra información de la aplicación; por eso los archivos suelen seguir una convención como JFIF o Exif y pueden contener un perfil ICC y metadatos descriptivos en segmentos de aplicación.

Datos clave

  1. Un valor numérico de calidad es una convención del codificador, no forma parte del estándar JPEG: el estándar no especifica tablas de cuantización predeterminadas, y los codificadores de tipo libjpeg asignan un valor de 0–100 a tablas escaladas, por lo que el mismo número no tiene por qué dar el mismo resultado en otro codificador. La calidad 100 no es sin pérdida. En libjpeg-turbo minimiza la pérdida por cuantización, pero el submuestreo de crominancia y el redondeo siguen descartando información, y el tamaño de los archivos aumenta drásticamente por encima de aproximadamente 95 con poca mejora visible.
  2. El JPEG básico es el proceso secuencial de 8 bits con codificación Huffman que todo decodificador basado en DCT debe admitir, y codifica cada componente en una sola pasada. El JPEG progresivo almacena los mismos coeficientes cuantizados en varias pasadas, por lo que un decodificador puede mostrar pronto una imagen completa aproximada y luego refinarla. La imagen final es idéntica a la secuencial con los mismos ajustes y el archivo tiene aproximadamente el mismo tamaño, pero la decodificación requiere un búfer de coeficientes para toda la imagen.
  3. Cada ciclo de decodificación y nuevo encoding vuelve a cuantizar, por lo que la pérdida se acumula al guardar sucesivamente; cuando los píxeles deban cambiar, vuelve a realizar el encoding a partir del original y no de una salida anterior. Las herramientas que trabajan con los coeficientes almacenados evitan ese ciclo: jpegtran puede alternar entre JPEG básico y progresivo, voltear una imagen o rotarla en incrementos de 90° sin degradarla. Se aplican dos límites. Estas herramientas no pueden cambiar la calidad, y un volteo o una rotación pueden dejar una franja del borde sin transformar, o recortarla si se solicita, cuando el ancho o el alto relevante no sea múltiplo del tamaño de la iMCU (unidad mínima codificada intercalada); la dimensión que importa depende de la transformación. Esa unidad depende del submuestreo de crominancia utilizado y suele ser de 8 o 16 píxeles, por lo que unas dimensiones divisibles por 8 no siempre bastan. Los metadatos son un asunto aparte: de forma predeterminada, jpegtran copia los comentarios y elimina otros metadatos, como los datos Exif y el perfil ICC, salvo que se le indique conservarlos. El texto de los comentarios ocupa su propio segmento de marcador y no interfiere con los datos de imagen, por lo que añadirlo o reemplazarlo tampoco requiere un nuevo encoding.
  4. El estándar JPEG también define un modo sin pérdida, pero es un proceso independiente que no se basa en DCT y que muchos decodificadores no pueden leer. Cuando se requieran píxeles exactos o transparencia, usa un formato como PNG; JPEG no tiene canal alfa.

Cuándo es importante JPEG

Elige JPEG cuando la amplia compatibilidad y los archivos fotográficos pequeños importen más que la conservación exacta de los píxeles. El encoding repetido o la compresión agresiva pueden introducir bloques visibles, halos y pérdida de detalle.

Cómo ayuda Transloadit con JPEG

El Robot /image/resize de Transloadit genera JPEG cuando format se establece en jpg, con un parámetro quality para el nivel de compresión, una opción progressive y strip para eliminar metadatos. La salida JPEG no puede conservar la transparencia y, de forma predeterminada, el Robot reemplaza el fondo de las imágenes transparentes por su color background. El Robot /image/optimize reduce el tamaño de los archivos JPEG existentes y puede conservar o eliminar sus metadatos.

Explora los formatos de archivo y las capacidades de compresión de Transloadit

Fuentes

Convierte tus conocimientos sobre multimedia en un pipeline funcional

Conecta las subidas, el procesamiento, la IA, el almacenamiento y la entrega mediante una sola API declarativa, mientras nos encargamos por ti del stack de encoding, el escalado y los cambios constantes de formatos.

Prueba Transloadit gratis