Developer's Daily | Unix by Example |
main | java | perl | unix | dev directory | web log |
pgm - portable graymap file format |
The portable graymap format is a lowest common denominator grayscale file format. The definition is as follows: |
- |
A "magic number" for identifying the file type. A pgm file’s magic number is the two characters "P2". |
|
- |
Whitespace (blanks, TABs, CRs, LFs). |
|
- |
A width, formatted as ASCII characters in decimal. |
|
- |
Whitespace. |
|
- |
A height, again in ASCII decimal. |
|
- |
Whitespace. |
|
- |
The maximum gray value, again in ASCII decimal. |
|
- |
Whitespace. |
|
- |
Width * height gray values, each in ASCII decimal, between 0 and the specified maximum value, separated by whitespace, starting at the top-left corner of the graymap, proceeding in normal English reading order. A value of 0 means black, and the maximum value means white. |
|
- |
Characters from a "#" to the next end-of-line are ignored (comments). |
|
- |
No line should be longer than 70 characters. |
Here is an example of a small graymap in this format: P2 # feep.pgm 24 7 15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 3 3 3 0 0 7 7 7 7 0 0 11 11 11 11 0 0 15 15 15 15 0 0 3 0 0 0 0 0 7 0 0 0 0 0 11 0 0 0 0 0 15 0 0 15 0 0 3 3 3 0 0 0 7 7 7 0 0 0 11 11 11 0 0 0 15 15 15 15 0 0 3 0 0 0 0 0 7 0 0 0 0 0 11 0 0 0 0 0 15 0 0 0 0 0 3 0 0 0 0 0 7 7 7 7 0 0 11 11 11 11 0 0 15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Programs that read this format should be as lenient as possible, accepting anything that looks remotely like a graymap. There is also a variant on the format, available by setting the RAWBITS option at compile time. This variant is different in the following ways: |
- |
The "magic number" is "P5" instead of "P2". |
|
- |
The gray values are stored as plain bytes, instead of ASCII decimal. |
|
- |
No whitespace is allowed in the grays section, and only a single character of whitespace (typically a newline) is allowed after the maxval. |
|
- |
The files are smaller and many times faster to read and write. |
Note that this raw format can only be used for maxvals less than or equal to 255. If you use the pgm library and try to write a file with a larger maxval, it will automatically fall back on the slower but more general plain format. |
fitstopgm(1), fstopgm(1), hipstopgm(1), lispmtopgm(1), psidtopgm(1), rawtopgm(1), pgmbentley(1), pgmcrater(1), pgmedge(1), pgmenhance(1), pgmhist(1), pgmnorm(1), pgmoil(1), pgmramp(1), pgmtexture(1), pgmtofits(1), pgmtofs(1), pgmtolispm(1), pgmtopbm(1), pnm(5), pbm(5), ppm(5) |
Copyright (C) 1989, 1991 by Jef Poskanzer. |