diff options
author | giraffedata <giraffedata@9d0c8265-081b-0410-96cb-a4ca84ce46f8> | 2006-12-25 03:06:05 +0000 |
---|---|---|
committer | giraffedata <giraffedata@9d0c8265-081b-0410-96cb-a4ca84ce46f8> | 2006-12-25 03:06:05 +0000 |
commit | 1017cbebe5d5edd859e0fddad0a8600f509f4821 (patch) | |
tree | 78bdf336648566f7a7d55f42837357dea3dd674c /ppm.html | |
parent | 16f2ac126651015a376eba864a3a35f738b0b25a (diff) | |
download | netpbm-mirror-1017cbebe5d5edd859e0fddad0a8600f509f4821.tar.gz netpbm-mirror-1017cbebe5d5edd859e0fddad0a8600f509f4821.tar.xz netpbm-mirror-1017cbebe5d5edd859e0fddad0a8600f509f4821.zip |
Place user guide into Subversion repository
git-svn-id: http://svn.code.sf.net/p/netpbm/code/userguide@181 9d0c8265-081b-0410-96cb-a4ca84ce46f8
Diffstat (limited to 'ppm.html')
-rw-r--r-- | ppm.html | 187 |
1 files changed, 187 insertions, 0 deletions
diff --git a/ppm.html b/ppm.html new file mode 100644 index 00000000..2c90804b --- /dev/null +++ b/ppm.html @@ -0,0 +1,187 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN"> +<HTML> +<HEAD> +<TITLE>PPM Format Specification</TITLE> +<META NAME="manual_section" CONTENT="5"> +</HEAD> +<BODY> +<H1>ppm</H1> +Updated: 03 October 2003 +<BR> +<A HREF="#index">Table Of Contents</A> + +<H2>NAME</H2> + +PPM - Netpbm color image format + +<H2 id="description">DESCRIPTION</H2> + +<p>This program is part of <a href="index.html">Netpbm</a>. + +<P>The PPM format is a lowest common denominator color image file +format. + +<P>It should be noted that this format is egregiously inefficient. +It is highly redundant, while containing a lot of information that the +human eye can't even discern. Furthermore, the format allows very +little information about the image besides basic color, which means +you may have to couple a file in this format with other independent +information to get any decent use out of it. However, it is very easy +to write and analyze programs to process this format, and that is the +point. + +<P>It should also be noted that files often conform to this format in +every respect except the precise semantics of the sample values. +These files are useful because of the way PPM is used as an +intermediary format. They are informally called PPM files, but to be +absolutely precise, you should indicate the variation from true PPM. +For example, "PPM using the red, green, and blue colors that the +scanner in question uses." + +<P>The name "PPM" is an acronym derived from "Portable Pixel Map." +Images in this format (or a precursor of it) were once also called +"portable pixmaps." + +<P>The format definition is as follows. You can use the <a +href="libnetpbm.html">libnetpbm</a> C subroutine library to read and +interpret the format conveniently and accurately. + +<P>A PPM file consists of a sequence of one or more PPM images. There are +no data, delimiters, or padding before, after, or between images. + +<P>Each PPM image consists of the following: + +<OL> +<LI>A "magic number" for identifying the file type. +A ppm image's magic number is the two characters "P6". +<LI> +Whitespace (blanks, TABs, CRs, LFs). +<LI> +A width, formatted as ASCII characters in decimal. +<LI> +Whitespace. +<LI> +A height, again in ASCII decimal. +<LI> +Whitespace. +<LI> +The maximum color value (Maxval), again in ASCII decimal. Must be less +than 65536 and more than zero. +<LI> +Newline or other single whitespace character. + +<LI>A raster of Height rows, in order from top to bottom. Each row +consists of Width pixels, in order from left to right. Each pixel is +a triplet of red, green, and blue samples, in that order. Each sample +is represented in pure binary by either 1 or 2 bytes. If the Maxval +is less than 256, it is 1 byte. Otherwise, it is 2 bytes. The most +significant byte is first. + +<P>A row of an image is horizontal. A column is vertical. The pixels +in the image are square and contiguous. + +<LI>In the raster, the sample values are "nonlinear." They are +proportional to the intensity of the ITU-R Recommendation BT.709 red, +green, and blue in the pixel, adjusted by the BT.709 gamma transfer +function. (That transfer function specifies a gamma number of 2.2 and +has a linear section for small intensities). A value of Maxval for +all three samples represents CIE D65 white and the most intense color +in the color universe of which the image is part (the color universe +is all the colors in all images to which this image might be +compared). + +<p>ITU-R Recommendation BT.709 is a renaming of the former CCIR +Recommendation 709. When CCIR was absorbed into its parent +organization, the ITU, ca. 2000, the standard was renamed. This +document once referred to the standard as CIE Rec. 709, but it isn't +clear now that CIE ever sponsored such a standard. + +<P>Note that another popular color space is the newer sRGB. A common +variation on PPM is to subsitute this color space for the one specified. + +<LI> +Note that a common variation on the PPM format is to have the sample +values be "linear," i.e. as specified above except without +the gamma adjustment. <B>pnmgamma</B> takes such a PPM variant as +input and produces a true PPM as output. + +<LI>Characters from a "#" to the next end-of-line, before +the maxval line, are comments and are ignored. + +</OL> + +<P>Note that you can use <B>pamdepth</B> to convert between a the +format with 1 byte per sample and the one with 2 bytes per sample. + +<P>There is actually another version of the PPM format that is fairly +rare: "plain" PPM format. The format above, which generally +considered the normal one, is known as the "raw" PPM format. +See <B><A HREF="pbm.html">pbm</A></B> for some commentary on how plain +and raw formats relate to one another and how to use them. + +<P>The difference in the plain format is: + +<DL COMPACT> +<DT>-<DD> +There is exactly one image in a file. +<DT>-<DD> +The magic number is P3 instead of P6. +<DT>-<DD> +Each sample in the raster is represented as an ASCII decimal number +(of arbitrary size). +<DT>-<DD> +Each sample in the raster has white space before and after it. There must +be at least one character of white space between any two samples, but there +is no maximum. There is no particular separation of one pixel from another -- +just the required separation between the blue sample of one pixel from the +red sample of the next pixel. +<DT>-<DD> +No line should be longer than 70 characters. +</DL> +<P> + +Here is an example of a small pixmap in this format. +<PRE> +P3 +# feep.ppm +4 4 +15 + 0 0 0 0 0 0 0 0 0 15 0 15 + 0 0 0 0 15 7 0 0 0 0 0 0 + 0 0 0 0 0 0 0 15 7 0 0 0 +15 0 15 0 0 0 0 0 0 0 0 0 +</PRE> + +<P>There is a newline character at the end of each of these lines. + +<P>Programs that read this format should be as lenient as possible, +accepting anything that looks remotely like a pixmap. + +<H2 id="compatibility">COMPATIBILITY</H2> + +<P>Before April 2000, a raw format PPM file could not have a maxval greater +than 255. Hence, it could not have more than one byte per sample. Old +programs may depend on this. + +<P>Before July 2000, there could be at most one image in a PPM file. As +a result, most tools to process PPM files ignore (and don't read) any +data after the first image. + +<H2 id="seealso">SEE ALSO</H2> + +<A HREF="pnm.html">pnm</A>, +<A HREF="pgm.html">pgm</A>, +<A HREF="pbm.html">pbm</A>, +<A HREF="pam.html">pam</A>, +<A HREF="directory.html">programs that process PPM</A> + + +<HR> +<H2 id="index">Table Of Contents</H2> +<UL> +<LI><A HREF="#description">DESCRIPTION</A> +<LI><A HREF="#compatibility">COMPATIBILITY</A> +<LI><A HREF="#seealso">SEE ALSO</A> +</UL> +</BODY> +</HTML> |