¿Qué es un archivo PGF?
Progressive Graphics File es un formato ráster basado en ondículas que admite decodificación progresiva. Puede codificar datos de imagen con compresión con pérdida o sin pérdida.
Cómo funcionan los archivos PGF
PGF transforma las muestras ráster en coeficientes de ondículas organizados como una pirámide de niveles de resolución. Un decodificador puede detenerse después de un nivel de menor resolución o seguir leyendo hasta alcanzar el tamaño completo, lo que hace que la progresión sea estructural en lugar de una imagen de vista previa independiente. La implementación de referencia es el códec de código abierto libPGF, y un uso documentado en producción es digiKam, que almacena las miniaturas en su base de datos interna como PGF. Los metadatos se incluyen en un bloque opcional de datos de usuario cuya estructura la documentación de libPGF solo propone, así que no des por hecho que otra herramienta encontrará allí EXIF o XMP. Comprueba tanto la disponibilidad de un codificador como la capacidad del destinatario para analizar PGF antes de utilizarlo para el intercambio.
Datos clave
- Una vista previa no suele requerir el archivo completo. El encabezado almacena el número de niveles de la pirámide, y cada nivel tiene aproximadamente una cuarta parte de los píxeles del siguiente nivel de mayor tamaño (libPGF redondea hacia arriba los anchos y altos impares al dividirlos por la mitad). Un directorio de tamaños de los niveles situado después del encabezado indica el número de bytes necesarios para decodificar el nivel más pequeño y cada uno de los siguientes, por lo que un lector puede obtener una porción inicial del archivo, decodificar una imagen pequeña y continuar después. libPGF expone esta función mediante un argumento de nivel en su llamada de lectura, donde el nivel 0 es la imagen de tamaño completo. Comprueba primero el número de niveles: libPGF asigna menos niveles a las imágenes pequeñas y ninguno a las muy pequeñas, por lo que un archivo de ese tipo puede contener únicamente su imagen de tamaño completo.
- La condición de compresión sin pérdida de un archivo PGF se registra en su encabezado, no en su nombre. El campo de calidad vale 0 para la compresión sin pérdida; los valores mayores cuantizan los coeficientes de ondículas con menor precisión, y la documentación de libPGF describe la calidad 4 como con pérdida, pero aún muy buena. Sin pérdida describe únicamente la etapa de encoding de PGF: un archivo con calidad 0 se decodifica en los mismos píxeles que recibió su codificador, que pueden haberse redimensionado o editado previamente, como ocurre con una miniatura. Unas dimensiones diferentes descartan una copia exacta, pero unas dimensiones coincidentes no la demuestran: compara los píxeles decodificados a tamaño completo con el original antes de considerar que un archivo es una copia exacta.
- Identifica PGF por su contenido: un archivo comienza con los bytes ASCII
PGF, seguidos de un byte de versión, y sus campos de varios bytes utilizan el orden little-endian. El sufijo.pgfpor sí solo es ambiguo. El backend pgf de Matplotlib, por ejemplo, guarda archivos.pgfque contienen comandos de dibujo de LaTeX, no datos de imagen PGF. - Los navegadores no muestran PGF: no figura entre los formatos de imagen que la guía de formatos de imagen de MDN enumera para la web, por lo que la entrega web requiere convertirlo a un formato como JPEG, PNG o WebP. Cabe esperar una compatibilidad limitada fuera de libPGF: la documentación de digiKam describe PGF como «no tan conocido», y en 2018 un usuario del sistema de seguimiento de errores de digiKam que quería reutilizar las miniaturas PGF de la aplicación en otro lugar informó que había encontrado pocas bibliotecas alternativas. En 2020, el responsable del mantenimiento respondió con un conversor independiente de PGF a PNG.
Cuándo son importantes los archivos PGF
Añade compatibilidad con PGF cuando un archivo documental o una aplicación existente dependa del formato. Su adopción limitada en comparación con JPEG o PNG puede restringir los decodificadores y codificadores disponibles y la compatibilidad con los navegadores.
Fuentes
- libPGF: la implementación de código abierto de PGF
- libPGF: detalles de PGF, estructura del encabezado de la versión 6, niveles de la pirámide, calidad y encoding de ROI
- libPGF: datos sobre PGF y modos de imagen
- Documentación de digiKam: formatos de imagen compatibles, PGF
- MDN: guía de tipos y formatos de archivos de imagen
- Manual de referencia de libPGF: número de niveles, niveles de lectura y cuantización
- Error de KDE 388936: uso de las miniaturas PGF de digiKam fuera de digiKam