Portable pixmap
Encyclopedia
The phrase Netpbm format commonly refers to any or all of the members of a set of closely related graphics formats used and defined by the Netpbm
Netpbm
Netpbm is an open source package of graphics programs and a programming library, used mainly in the Unix world. It is a highly portable package, working under many Unix platforms, Windows, Mac OS X, VMS, Amiga OS and others and is included in all major open source Unix-like operating system...

 project.
The portable pixmap format (PPM), the portable graymap format (PGM) and the portable bitmap format (PBM) are image file formats
Image file formats
Image file formats are standardized means of organizing and storing digital images. Image files are composed of either pixels, vector data, or a combination of the two. Whatever the format, the files are rasterized to pixels when displayed on most graphic displays...

 originally designed to be easily exchanged between platforms. They are also sometimes referred to collectively as the portable anymap format (PNM).

History

The PBM format was invented by Jef Poskanzer
Jef Poskanzer
Jeffrey A. Poskanzer is a computer programmer. He was the first person to post a weekly FAQ to Usenet. He developed the portable pixmap file format and Pbmplus to manipulate it. He owns the internet address acme.com , and worked on the team that ported A/UX...

 in the 1980s as a format for monochrome bitmaps that could be transmitted within an email message as plain ASCII text, allowing it to survive any changes in text formatting.

The first library of tools to handle the PBM format was Pbmplus. It was developed by the format's creator and released in 1988. It mainly contained tools to convert between PBM and other graphics formats. By the end of 1988, Jef Poskanzer had developed the PGM and PPM formats along with their associated tools and added them to Pbmplus. The final release of Pbmplus was December 10, 1991.

In 1993, the Netpbm
Netpbm
Netpbm is an open source package of graphics programs and a programming library, used mainly in the Unix world. It is a highly portable package, working under many Unix platforms, Windows, Mac OS X, VMS, Amiga OS and others and is included in all major open source Unix-like operating system...

 library was developed to replace the unmaintained Pbmplus. It was simply a repackaging of Pbmplus with additions and fixes submitted by people all over the world.

File format description

Each format differs in what colors it is designed to represent:
  • PBM is for bitmaps (black and white, no grays)
  • PGM is for grayscale
  • PPM is for "pixmaps" which represent full RGB
    RGB color model
    The RGB color model is an additive color model in which red, green, and blue light is added together in various ways to reproduce a broad array of colors...

     color.


Each file starts with a two-byte magic number
Magic number (programming)
In computer programming, the term magic number has multiple meanings. It could refer to one or more of the following:* A constant numerical or text value used to identify a file format or protocol; for files, see List of file signatures...

 (in ASCII) that explains the type of file it is (PBM, PGM, and PPM) and its encoding (ASCII
ASCII
The American Standard Code for Information Interchange is a character-encoding scheme based on the ordering of the English alphabet. ASCII codes represent text in computers, communications equipment, and other devices that use text...

 or binary). The magic number is a capital P followed by a single digit number.
Magic Number Type Encoding
P1 Portable bitmap ASCII
P2 Portable graymap ASCII
P3 Portable pixmap ASCII
P4 Portable bitmap Binary
P5 Portable graymap Binary
P6 Portable pixmap Binary


The ASCII based formats allow for human-readability and easy transport to other platforms (so long as those platforms understand ASCII), while the binary formats are more efficient both at saving space in the file, as well as being easier to parse due to the lack of whitespace.

When using the binary formats, PBM uses 1 bit per pixel, PGM uses 8 bits per pixel, and
PPM uses 24 bits per pixel: 8 for red, 8 for green, 8 for blue.

PBM example

A simple example of the PBM format is as follows (There is a newline character at the end of each line.):

P1
# This is an example bitmap of the letter "J"
6 10
0 0 0 0 1 0
0 0 0 0 1 0
0 0 0 0 1 0
0 0 0 0 1 0
0 0 0 0 1 0
0 0 0 0 1 0
1 0 0 0 1 0
0 1 1 1 0 0
0 0 0 0 0 0
0 0 0 0 0 0

The string P1 identifies the file format. The hash sign introduces a comment. The next two numbers give the width and the height. Then follows the matrix with the pixel values (in the monochrome case here, only zeros and ones).

Here is the resulting image:
Here it is again magnified 20 times:

PGM example

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. Black is 0 and max value is white. There is a newline character at the end of each line.

P2
# Shows the word "FEEP" (example from Netpbm main page on 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

Example (magnified):


PPM example

This is an example of a color RGB image stored in PPM format. There is a newline character at the end of each line.

P3
# The P3 means colors are in ASCII, then 3 columns and 2 rows,
# then 255 for max color, then RGB triplets
3 2
255
255 0 0 0 255 0 0 0 255
255 255 0 255 255 255 0 0 0

The image (magnified):


The P6 binary format of the same image will store each color component of each pixel with one byte (thus three bytes per pixel) in the order red, green, then blue. The file will be smaller but the color information will not be readable by humans.

The PPM format is not compressed, and thus requires more space and bandwidth than a compressed format would require. For example, the above 192x128 PNG image has a file size of 166 bytes. When converted to a 192x128 PPM image, the file size is 73,848 bytes. The PPM format is generally an intermediate format used for image work before converting to a more efficient format, for example the PNG (Portable Network Graphics) format, without any loss of information in the intermediate step.

16-bit extensions

The original definition of the PGM and the PPM binary formats (the P5 and P6 formats) did not allow bit depths greater than 8 bits. One can of course use the ASCII format, but this format both slows down reading and makes the files much larger. Accordingly, many programmers have attempted to extend the format to allow higher bit depths. Using higher bit depths encounters the problem of having to decide on the endianness
Endianness
In computing, the term endian or endianness refers to the ordering of individually addressable sub-components within the representation of a larger data item as stored in external memory . Each sub-component in the representation has a unique degree of significance, like the place value of digits...

 of the file. Unfortunately it appears that the various implementations could not agree on which byte order to use, and some connected the 16-bit endianness to the pixel packing order. In Netpbm
Netpbm
Netpbm is an open source package of graphics programs and a programming library, used mainly in the Unix world. It is a highly portable package, working under many Unix platforms, Windows, Mac OS X, VMS, Amiga OS and others and is included in all major open source Unix-like operating system...

, the de facto
De facto
De facto is a Latin expression that means "concerning fact." In law, it often means "in practice but not necessarily ordained by law" or "in practice or actuality, but not officially established." It is commonly used in contrast to de jure when referring to matters of law, governance, or...

standard implementation of the PNM formats, the most significant byte is first.

See also

  • PAM
    PAM graphics format
    The PAM graphics format of the Netpbm package generalises all the features of the previous formats and provides for extending them...

  • Comparison of image viewers
    Comparison of image viewers
    This article presents a comparison of image viewers and image organizers which can be used for image viewing.-General information:Note 1: Adobe Bridge comes included in the price with the Adobe Creative Suite CS2, Adobe Production Studio and Photoshop Elements 4 for Mac OS X...

  • JBIG
    JBIG
    JBIG is a lossless image compression standard from the Joint Bi-level Image Experts Group, standardized as ISO/IEC standard 11544 and as ITU-T recommendation T.82. It is widely implemented in fax machines. Now that the newer bi-level image compression standard JBIG2 has been released, JBIG is also...

    /JBIG2
    JBIG2
    JBIG2 is an image compression standard for bi-level images, developed by the Joint Bi-level Image Experts Group. It is suitable for both lossless and lossy compression...

  • X BitMap/X PixMap

External links

Examples of ppm files in various formats
The source of this article is wikipedia, the free encyclopedia.  The text of this article is licensed under the GFDL.
 
x
OK