O que é um arquivo PBM?

Um arquivo Portable Bitmap é um formato raster da família Netpbm para imagens monocromáticas. Cada pixel tem um de dois valores, representados por uma codificação textual ou binária deliberadamente simples.

Como funcionam os arquivos PBM

PBM é o formato de dois níveis da família Netpbm, ao lado de PGM (escala de cinza) e PPM. PNM é o nome coletivo desses três, e PAM é um quarto formato, mais geral. Uma imagem PBM consiste em um cabeçalho ASCII curto seguido por uma matriz de pixels: um número mágico de dois caracteres, a largura e a altura como números decimais separados por espaços em branco e, depois, as linhas de cima para baixo, cada uma da esquerda para a direita. PBM não tem um campo de valor máximo, que PGM acrescenta após a altura. Antes da matriz de pixels, o texto de um # até o fim da linha é um comentário. A forma bruta empacota pixels em bytes, enquanto a forma textual, mais antiga, escreve cada pixel como um 1 ou 0 em ASCII. Imagens mais complexas precisam de PGM, PPM, PAM ou outro formato.

Informações essenciais

  1. Identifique a variante pelos dois primeiros bytes, não pelo sufixo: P4 é a forma binária com bits empacotados (bruta) e P1 é a forma ASCII (textual). O sufixo convencional é .pbm, mas .pnm também é usado para PBM, PGM e PPM, e nenhum tipo de mídia está registrado na IANA (image/x-portable-bitmap é o valor convencional). Verifique se sua biblioteca lê ambas as variantes: a documentação do Pillow diz que ele escreve as formas brutas e lê arquivos textuais de P1 a P3 somente a partir da versão 9.2.0.
  2. No PBM bruto, cada linha é empacotada com 8 pixels por byte, começando pelo bit mais significativo, e o último byte da linha é preenchido com bits de valor irrelevante. Portanto, uma linha ocupa, em bytes, a largura dividida por 8, arredondada para cima, e um leitor que trata a matriz de pixels como um único fluxo contínuo de bits desalinha todas as linhas após a primeira sempre que a largura não é múltipla de 8. Exatamente um caractere de espaço em branco separa a altura da matriz de pixels.
  3. Um 1 armazenado representa preto e um 0 representa branco, o inverso de PGM, em que zero é preto e o valor máximo é branco, e de uma imagem PAM com tipo de tupla BLACKANDWHITE, que usa 0 para preto e 1 para branco. O código que mapeia os bits PBM armazenados diretamente para valores de luminosidade ou amostras PAM precisa invertê-los. Uma biblioteca de decodificação pode já ter feito isso: Pillow transforma um 1 armazenado em 0 e um 0 armazenado em 255, então verifique o que sua biblioteca retorna antes de inverter novamente.
  4. As duas variantes diferem em mais do que a codificação. Um arquivo textual contém exatamente uma imagem, não tem bits de preenchimento, ignora espaços em branco dentro da matriz de pixels e deve limitar as linhas a 70 caracteres. Um arquivo bruto pode conter várias imagens consecutivas, algo permitido pela especificação desde julho de 2000, e ela observa que a maioria das ferramentas ainda lê apenas a primeira. Para obter a maior compatibilidade possível, a especificação recomenda escrever P4, uma quebra de linha, a largura e a altura separadas por um espaço, uma quebra de linha e uma única matriz de pixels.

Quando os arquivos PBM são importantes

Use PBM como formato intermediário para dados de dois níveis, como máscaras binárias transferidas entre ferramentas de imagem. A especificação do Netpbm o descreve como um intermediário que não leva a eficiência em conta e diz que não é um formato que normalmente se usaria para armazenar ou transmitir um arquivo. Ele não pode representar escala de cinza, cor ou transparência parcial sem conversão para outro formato.

Como a Transloadit ajuda com arquivos PBM

A tabela de formatos de imagem da Transloadit lista PBM como um formato que seus Robots baseados em ImageMagick, incluindo /image/resize, podem ler e escrever, e o parâmetro format desse Robot aceita qualquer formato que a tabela marque como disponível para escrita.

A tabela não informa se a saída PBM é escrita na variante bruta ou textual, então verifique o número mágico da saída se a próxima ferramenta precisar de uma delas.

Explore os formatos de arquivo e os recursos de compressão da Transloadit

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