¿Qué es un archivo PBM?
Un archivo Portable Bitmap es un formato ráster de Netpbm para imágenes monocromas. Cada píxel tiene uno de dos valores, representados mediante un encoding de texto o binario deliberadamente sencillo.
Cómo funcionan los archivos PBM
PBM es el miembro de dos niveles de la familia Netpbm, junto a PGM (escala de grises) y PPM. PNM es el nombre colectivo de esos tres, y PAM es un cuarto formato más general. Una imagen PBM consta de un breve encabezado ASCII seguido de un ráster: un número mágico de dos caracteres, el ancho y el alto como números decimales separados por espacios en blanco y, a continuación, las filas de arriba abajo, cada una de izquierda a derecha. PBM no tiene un campo de valor máximo, que PGM añade después del alto. Antes del ráster, el texto desde un # hasta el final de la línea es un comentario. La forma binaria empaqueta los píxeles en bytes, mientras que la forma de texto, más antigua, escribe cada píxel como un 1 o un 0 en ASCII. Las imágenes más complejas necesitan PGM, PPM, PAM u otro formato.
Datos clave
- Identifica la variante por los dos primeros bytes, no por el sufijo:
P4es la forma binaria empaquetada (raw) yP1es la forma de texto ASCII (plain). El sufijo convencional es.pbm, pero.pnmtambién se utiliza tanto para PBM como para PGM y PPM, y no hay ningún tipo de medio registrado en IANA (image/x-portable-bitmapes el valor convencional). Comprueba que tu biblioteca lea ambas variantes: la documentación de Pillow indica que escribe las formas binarias (raw) y que solo lee archivos de texto (plain) deP1aP3desde la versión 9.2.0. - En PBM binario, cada fila se empaqueta con 8 píxeles por byte, con el bit más significativo primero, y el último byte de la fila se completa con bits cuyo valor es indiferente. Por tanto, una fila ocupa en bytes el ancho dividido entre 8, redondeado hacia arriba, y un lector que trate el ráster como un único flujo continuo de bits desalineará todas las filas posteriores a la primera cuando el ancho no sea múltiplo de 8. Exactamente un carácter de espacio en blanco separa el alto del ráster.
- Un valor almacenado de
1es negro y uno de0es blanco, al contrario que en PGM, donde cero es negro y el valor máximo es blanco, y que en una imagen PAM con el tipo de tuplaBLACKANDWHITE, que utiliza 0 para negro y 1 para blanco. El código que asigne directamente los bits almacenados en PBM a valores de luminosidad o muestras PAM tiene que invertirlos. Es posible que una biblioteca de decodificación ya lo haya hecho: Pillow convierte un valor almacenado de 1 en 0 y uno de 0 en 255, así que comprueba qué devuelve tu biblioteca antes de invertirlos de nuevo. - Las dos variantes difieren en algo más que el encoding. Un archivo de texto contiene exactamente una imagen, no tiene bits de relleno, ignora los espacios en blanco dentro del ráster y debería limitar sus líneas a 70 caracteres. Un archivo binario puede contener varias imágenes consecutivas, algo que la especificación permite desde julio de 2000, y esta señala que la mayoría de las herramientas aún leen solo la primera. Para lograr la mayor compatibilidad posible, la especificación recomienda escribir
P4, un salto de línea, el ancho y el alto separados por un espacio, un salto de línea y un único ráster.
Cuándo son importantes los archivos PBM
Usa PBM como formato intermedio para datos de dos niveles, como máscaras binarias que se transfieren entre herramientas de imagen. La especificación de Netpbm lo describe como un intermediario que no tiene en cuenta la eficiencia e indica que no es un formato que se usaría normalmente para almacenar o transmitir un archivo. No puede representar escala de grises, color ni transparencia parcial sin convertir a otro formato.
Cómo ayuda Transloadit con los archivos PBM
La tabla de formatos de imagen de Transloadit incluye PBM como un formato que sus Robots basados en ImageMagick, incluido /image/resize, pueden leer y escribir, y el parámetro format de ese Robot acepta cualquier formato que la tabla marque como compatible con la escritura.
La tabla no indica si la salida PBM se escribe en la variante binaria o en la de texto, así que comprueba el número mágico de la salida si la siguiente herramienta necesita una de ellas.
Explora los formatos de archivo y las capacidades de compresión de Transloadit
Fuentes
- Netpbm: especificación del formato PBM (estructura, subconjunto mínimo, PBM de texto, tipo de medio, compatibilidad)
- Netpbm: PNM, el nombre colectivo de PBM, PGM y PPM
- Netpbm: especificación del formato PGM (valor máximo, cero es negro)
- Netpbm: especificación del formato PAM (tipo de tupla BLACKANDWHITE, planos de opacidad)
- Manual de Pillow: sección PPM (compatibilidad de lectura y escritura de PBM, PGM y PPM por versión)
- Código fuente de Pillow: PpmImagePlugin.py (decodificación de PBM con bits invertidos)
- Incidencia de Pillow n.º 860: no se puede identificar el archivo de imagen al abrir archivos ASCII .pbm, .pgm y .ppm