Netpbm

[8] Poskanzer developed the first library of tools to handle the PBM format, Pbmplus, released in 1988.

By the end of 1988, Poskanzer had developed the PGM and PPM formats along with their associated tools and added them to Pbmplus.

The PGM and PPM formats (both ASCII and binary versions) have an additional parameter for the maximum value (numbers of grey between black and white) after the X and Y dimensions and before the actual pixel data.

The image shown above using only 0 or the maximal value for the red-green-blue channels can be also encoded as: White space including line ends and comment lines is syntactically equivalent to a single space within the PNM headers.

While the ASCII format can accommodate greater bit depths, it increases file size and thus slows read and write operations.

[11] The PFM (Portable Floatmap) is the unofficial four byte IEEE 754 single precision floating point extension.

[12][13][14] After the header the file proceeds with floating point numbers for each pixel, specified in left-to-right, bottom-to-top order.

[12] The Netpbm package contains over 350 programs,[17] most of which have "pbm", "pgm", "ppm", "pam", or "pnm" in their names.

The Netpbm package can, for example, use two successive conversion programs to turn a color picture in the GIF format into a .bmp file: This is more commonly done as a pipeline, to save execution time and to avoid leaving a temporary somepic.ppm file around: The Netpbm programs are frequently used as intermediates to convert between obscure formats.

For instance, there may be no tool to convert an X11 window dump (XWD format) directly to a Macintosh PICT file, but one can do this by running xwdtopnm, then ppmtopict.

As a more complex example, Netpbm tools can convert 48×48 XBM to Ikon and eventually X-Face.

By the end of 1988, Poskanzer had developed the PGM (greyscale) and PPM (color) formats and released them with Pbmplus.

At first, it was nothing more than a renamed release of Pbmplus, but updates continued to occur until 1995 when the package again became abandoned.

In 2000, PAM was added to the file formats of the Netpbm library allowing an alpha channel.

Portable Arbitrary Map (PAM) is an extension of the older binary P4...P6 graphics formats, introduced with netpbm version 9.7 (August 2000).

Also, the value 1 in such a PAM image stands for white ("light on"), as opposed to black in PBM ("ink on").

All of the basic tuple types (BLACKANDWHITE, GRAYSCALE, and RGB) have a variant with an opacity channel.

The specification permits MAXVAL 1 for GRAYSCALE, but it would have the same effect as BLACKANDWHITE.An example in the BMP article shows an RGBA image with 4×2=8 blue, green, red, and white pixels; half transparent (0x7F) in the first lower row, opaque (0xFF) in the second upper row; hex.

The format is not even limited to graphics, its definition allows it to be used for arbitrary three-dimensional matrices of unsigned integers.

Some programs of the Netpbm package, for example pamsummcol, function as crude matrix arithmetic processors and use the PAM format this way.

Netpbm consists of hundreds of different tools, each offered with a public copyright license of its own.

Example (magnified)
Image (magnified)
0,0: blue 0000FF FF 0,1: green 00FF00 FF 0,2: red FF0000 FF 0,3: white FFFFFF FF 1,0: blue 0000FF 7F, half transparent 1,1: green 00FF00 7F, half transparent 1,2: red FF0000 7F, half transparent 1,3: white FFFFFF 7F, half transparent