¿Qué es PJPEG?

PJPEG suele referirse a JPEG progresivo, que almacena una imagen en varios barridos. Un decodificador puede mostrar una versión poco detallada de toda la imagen antes de que los barridos posteriores añadan detalles más finos.

Cómo funciona PJPEG

Un JPEG progresivo divide la información de los coeficientes en una secuencia de barridos en lugar de codificar por completo cada región de la imagen en una sola pasada. Los primeros barridos establecen la estructura general de todo el fotograma, y los posteriores aportan detalles de frecuencia adicionales o mayor precisión en los coeficientes. Sigue formando parte del ecosistema JPEG convencional, por lo que puede pasar por los pipelines habituales de activos fotográficos, pero el refinamiento visible depende tanto del decodificador como del software de presentación.

Datos clave

  1. JPEG progresivo es un modo del estándar JPEG, no un formato independiente: los mismos coeficientes DCT cuantizados se distribuyen en varios barridos, divididos mediante selección espectral (bandas de coeficientes), aproximación sucesiva (los bits más significativos primero) o ambas. No es una pila de miniaturas codificadas de forma independiente. Un analizador puede leer el modo en el marcador de cabecera del fotograma: FF C2 (SOF2) para un archivo progresivo codificado con Huffman, FF C0 (SOF0) para el modo básico.
  2. Ni la extensión del archivo ni el tipo de medio identifican el modo. Los archivos progresivos normalmente conservan .jpg o .jpeg y image/jpeg; MDN también incluye .pjpeg y .pjp como extensiones JPEG. image/pjpeg no figura en el registro de IANA. Es la etiqueta que devolvía la detección MIME de Internet Explorer para los datos JPEG en general por compatibilidad con versiones anteriores, por lo que una subida etiquetada como image/pjpeg no es necesariamente progresiva, y una lista de permitidos que admita esos clientes heredados tiene que tratarla como JPEG e inspeccionar el contenido.
  3. Decodificar un archivo progresivo y mostrar sus pasadas intermedias son cosas distintas. libjpeg-turbo solo devuelve la imagen final a menos que la aplicación utilice su modo de imagen en búfer, y su documentación indica que cada pasada mostrada requiere aproximadamente tanto trabajo como decodificar una imagen completa. Un archivo con varios barridos también necesita un búfer de coeficientes para toda la imagen, mientras que uno con un solo barrido solo necesita búferes proporcionales al ancho de la imagen. Las herramientas de libjpeg-turbo ofrecen un límite de barridos porque los archivos manipulados con muchísimos barridos pueden consumir demasiada CPU. Prevé la memoria necesaria y limita la cantidad de barridos al decodificar subidas no confiables.
  4. Con el mismo ajuste de calidad, un archivo progresivo se decodifica en la misma imagen final que uno secuencial y tiene aproximadamente el mismo tamaño, a menudo ligeramente menor, según la documentación de libjpeg-turbo. Elígelo para la visualización incremental, no para ahorrar espacio. El estándar no exige que las implementaciones proporcionen todos los modos, y algunos decodificadores integrados, como TJpgDec, solo admiten el modo básico.

Cuándo es importante PJPEG

Elige JPEG progresivo cuando sea valioso ver una primera versión de la imagen durante la descarga de una fotografía grande. Los navegadores y las bibliotecas de imágenes más utilizados decodifican los barridos progresivos de forma fiable, así que reserva las comprobaciones de compatibilidad para destinos con limitaciones, como los decodificadores integrados o de hardware que solo implementan JPEG básico.

Cómo ayuda Transloadit con PJPEG

El Robot /image/resize de Transloadit tiene un parámetro progressive que entrelaza la salida para que los navegadores puedan mostrar una versión de baja resolución de toda la imagen antes de que llegue el resto de los datos; está desactivado de forma predeterminada. La tabla de formatos de imagen también incluye PJPEG junto a JPG y JPEG como un nombre de formato que sus Robots basados en ImageMagick pueden leer y escribir.

La documentación del Robot indica un aumento del tamaño del archivo para progressive y no especifica a qué formatos de salida se aplican la opción o ese aumento. La documentación de libjpeg-turbo describe los archivos JPEG progresivos como de aproximadamente el mismo tamaño que los secuenciales, a menudo ligeramente más pequeños, así que realiza mediciones con tus propias imágenes. La documentación no describe qué cambia al elegir PJPEG como formato de salida en comparación con JPG.

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