O que é um arquivo PPM?
Um arquivo PPM (Portable Pixel Map, também chamado de portable pixmap) é o formato de imagem colorida do Netpbm: uma grade não comprimida de amostras de vermelho, verde e azul após um cabeçalho curto de texto. Suas variantes binária (P6) e de texto simples (P3) priorizam a facilidade de análise em vez da compactação.
Como os arquivos PPM funcionam
Uma imagem PPM consiste em um cabeçalho de texto seguido de um raster. O cabeçalho contém o número mágico e, em seguida, a largura, a altura e o valor máximo de amostra (maxval, de 1 a 65535) como números decimais em ASCII separados por espaços em branco; # inicia um comentário. Na variante bruta usual (P6), um único caractere de espaço em branco encerra o cabeçalho e o raster vem em seguida em linhas de cima para baixo, cada pixel como uma amostra de vermelho, uma de verde e uma de azul: um byte cada quando maxval é inferior a 256; caso contrário, dois bytes com o mais significativo primeiro. Já a variante de texto simples (P3) grava cada amostra como um número decimal em ASCII. Nada é comprimido, então uma imagem bruta de 1920 × 1080 com maxval 255 ocupa 6.220.800 bytes mais o cabeçalho. O Netpbm chama PPM de um formato de cores de mínimo denominador comum e de “extremamente ineficiente”, e diz que o objetivo é justamente ser muito fácil de implementar em programas.
Informações essenciais
- Grave a variante bruta
P6, a menos que uma pessoa precise ler o arquivo. O Netpbm considera a variante de texto simplesP3bastante rara e, para obter a maior compatibilidade possível, recomenda um subconjunto mínimo:P6, uma quebra de linha, largura e altura separadas por um espaço, uma quebra de linha, um maxval de no máximo 255, uma quebra de linha e, então, o raster, com apenas uma imagem no arquivo. Um arquivo PPM bruto pode conter várias imagens em sequência de acordo com a especificação, mas o Netpbm alerta que a maioria das ferramentas lê apenas a primeira. - Maxval define tanto a escala quanto a quantidade de bytes de cada amostra. Os valores vão de 0 a maxval, que pode ser qualquer valor de 1 a 65535, e os arquivos brutos passam de um byte por amostra para dois bytes em big-endian quando maxval chega a 256. Um leitor que fixa canais de 8 bits no código interpreta incorretamente um arquivo válido de 16 bits, e um que ignora maxval interpreta o brilho de forma errada. O Netpbm observa que os arquivos brutos eram limitados a 255 antes de abril de 2000 e que programas antigos podem depender disso.
- O significado das cores é especificado, mas não registrado no arquivo. As amostras PPM propriamente ditas são de vermelho, verde e azul BT.709 com a função de transferência gama BT.709, e maxval nos três canais corresponde ao branco D65. A própria especificação observa que os arquivos costumam usar sRGB em seu lugar ou armazenar amostras lineares; o cabeçalho não tem campo para indicar qual interpretação é usada nem espaço para um perfil ICC, então combine a interpretação com quem produz os arquivos. O
pnmgammado Netpbm converte entre essas variantes. - PPM não tem canal alfa: cada pixel consiste em exatamente três amostras. O Netpbm mantém a transparência em um arquivo PGM separado usado como máscara de transparência, ou em seu formato PAM com o tipo de tupla
RGB_ALPHA, então converter uma imagem com transparência para PPM descarta o alfa, a menos que ele seja exportado separadamente.
Quando os arquivos PPM são relevantes
Use PPM para conversão, inspeção ou depuração de imagens sem complicações quando a simplicidade do decodificador for útil. Converta o arquivo antes da entrega quando seu tamanho relativamente grande desperdiçar armazenamento ou largura de banda da rede.
Como a Transloadit ajuda com arquivos PPM
A tabela de formatos de imagem da Transloadit lista PPM como um formato que seus Robots baseados no ImageMagick, incluindo /image/resize, podem ler e gravar, então um arquivo PPM pode ser convertido em um formato comprimido como PNG ou JPEG em um Step.
A tabela informa o que cada stack pode ler e gravar. Ela não diz como as amostras de 16 bits ou as variantes de cor do PPM são interpretadas, e nenhuma Assembly foi executada para este verbete.
Explore os formatos de arquivo e os recursos de compressão da Transloadit
Fontes
- Netpbm: especificação do formato de imagem colorida PPM (formato, subconjunto mínimo, PPM de texto simples, compatibilidade)
- Netpbm: especificação do formato de imagem PGM em escala de cinza (variante de máscara de transparência)
- Netpbm: especificação do formato PAM (tipos de tupla RGB e RGB_ALPHA)
- Problema #5008 do Pillow: o valor máximo de cinza/cor de PGM e PPM é ignorado