Lihuen
RSSRSS AtomAtom

Especificación de los archivos net-ppm

Cada archivo ppm empieza con dos bytes llamados magic numbers, que pueden ser P1, P2, P3, P4, P5 o P6.

Si los primeros bytes son P1, P2 o P3, el formato es "legible" (human readable; quiere decir que el formato esta en ascii) y si los bytes son P4, P5 o P6, los datos están en formato binario. Para cualquiera de los formatos, cada línea que comience con # es un comentario y no forma parte de la imagen.

Lo que sigue al magic number y no es un comentario es una línea con 2 substrings separados por uno o más espacios indicando 2 números. El primero es el ancho y el segundo es el alto. Lo que sigue y no es un comentario, se clasifica según el tipo en:

Si la imagen es de m * n pixels

P1

Magic Number: 0x5031

P1: m * n bytes, representando ceros o unos ascii, agrupados en líneas de 70 bytes. Los ceros indican un pixel negro y un uno, uno blanco.

P2

Magic Number: 0x5032

P2: m * n strings, representando números de 0 a 255 indicando para cada string, la intensidad de gris para ese pixel.

P3

Magic Number: 0x5033

P3: m * n * 3 strings, representando números de 0 a 255 indicando para cada string, la intensidad de color rojo, verde y azul respectivamente para ese pixel.

P4

Magic Number: 0x5034

P4: (m*n) / 8 bytes, indicando por cada bit, si el pixel es blanco o negro. (Si el valor del byte es 0xF0, los primeros 4 pixels serán blancos y los 4 siguientes, negros)

P5

Magic Number: 0x5035

P5: m * n bytes, indicando por cada uno, el nivel de gris del pixel.

P6

Magic Number: 0x5036

P6: m * n * 3 bytes, indicando la cantidad de rojo, verde y azul de un pixel. Para los strings, pueden estar separados por uno o más espacios en blanco (ascii 0x20), tabs (ascii 0x09), CRs (ascii 0x0A), LFs (ascii 0x0D) y las líneas NO pueden tener más de 70 caracteres de largo.