O que é um arquivo PGF?

Progressive Graphics File é um formato raster baseado em wavelets que oferece suporte à decodificação progressiva. Ele pode codificar dados de imagem com compressão com ou sem perdas.

Como funcionam os arquivos PGF

PGF transforma amostras raster em coeficientes de wavelet organizados como uma pirâmide de níveis de resolução. Um decodificador pode parar após um nível de menor resolução ou continuar lendo até atingir o tamanho completo, o que torna a progressão estrutural, em vez de uma imagem de prévia separada. A implementação de referência é o codec de código aberto libPGF, e um uso documentado em produção é o digiKam, que armazena as miniaturas em seu banco de dados interno como PGF. Os metadados são transportados em um bloco opcional de dados do usuário cuja estrutura é apenas proposta pela documentação do libPGF, então não presuma que outra ferramenta encontrará EXIF ou XMP ali. Confirme tanto a disponibilidade do codificador quanto a capacidade do destinatário de analisar PGF antes de usá-lo para intercâmbio.

Informações essenciais

  1. Uma prévia normalmente não exige o arquivo inteiro. O cabeçalho armazena o número de níveis da pirâmide, e cada nível tem cerca de um quarto dos pixels do nível imediatamente maior (o libPGF arredonda larguras e alturas ímpares para cima ao dividi-las pela metade). Um diretório de tamanhos dos níveis após o cabeçalho fornece o número de bytes necessários para decodificar o menor nível e cada nível seguinte, então um leitor pode buscar uma parte inicial do arquivo, decodificar uma imagem pequena e continuar depois. O libPGF expõe isso como um argumento de nível em sua chamada de leitura, em que o nível 0 é a imagem em tamanho completo. Verifique primeiro a contagem de níveis: o libPGF atribui menos níveis a imagens pequenas e nenhum a imagens muito pequenas, então um arquivo assim pode conter apenas a imagem em tamanho completo.
  2. O cabeçalho de um arquivo PGF, e não seu nome, registra se ele usa compressão sem perdas. O campo de qualidade é 0 para compressão sem perdas; valores maiores quantizam os coeficientes de wavelet de forma mais grosseira, e a documentação do libPGF descreve a qualidade 4 como com perdas, mas ainda muito boa. Sem perdas descreve apenas a etapa de codificação PGF: um arquivo com qualidade 0 é decodificado para os pixels que seu codificador recebeu, que podem já ter sido redimensionados ou editados, como ocorre com uma miniatura. Dimensões diferentes descartam uma cópia exata, mas dimensões iguais não a comprovam: compare os pixels decodificados em tamanho completo com o original antes de tratar um arquivo como uma cópia exata.
  3. Identifique PGF pelo conteúdo: um arquivo começa com os bytes ASCII PGF, seguidos por um byte de versão, e seus campos de vários bytes usam a ordem little-endian. O sufixo .pgf sozinho é ambíguo. O backend pgf do Matplotlib, por exemplo, salva arquivos .pgf que contêm comandos de desenho LaTeX, não dados de imagem PGF.
  4. Navegadores não exibem PGF: ele não está entre os formatos de imagem que o guia de formatos de imagem da MDN lista para a web, então a entrega pela web precisa de conversão para um formato como JPEG, PNG ou WebP. Espere suporte limitado fora do libPGF: a documentação do digiKam descreve PGF como “não tão conhecido” e, em 2018, um usuário no rastreador de bugs do digiKam que queria reutilizar as miniaturas PGF do aplicativo em outros lugares relatou ter encontrado poucas outras bibliotecas. Em 2020, o mantenedor respondeu com um conversor independente de PGF para PNG.

Quando os arquivos PGF são importantes

Adicione suporte a PGF quando um acervo ou aplicativo existente depender do formato. Sua adoção limitada em comparação com JPEG ou PNG pode restringir os decodificadores e codificadores disponíveis e a compatibilidade com navegadores.

Fontes

Transforme conhecimento sobre mídia em um pipeline funcional

Conecte uploads, processamento, IA, armazenamento e entrega por meio de uma única API declarativa, com o stack de codificação, o ajuste de escala e as constantes mudanças de formatos gerenciados para você.

Experimente a Transloadit gratuitamente