summary refs log tree commit diff
path: root/ppm.html
diff options
context:
space:
mode:
authorgiraffedata <giraffedata@9d0c8265-081b-0410-96cb-a4ca84ce46f8>2006-12-25 03:06:05 +0000
committergiraffedata <giraffedata@9d0c8265-081b-0410-96cb-a4ca84ce46f8>2006-12-25 03:06:05 +0000
commit1017cbebe5d5edd859e0fddad0a8600f509f4821 (patch)
tree78bdf336648566f7a7d55f42837357dea3dd674c /ppm.html
parent16f2ac126651015a376eba864a3a35f738b0b25a (diff)
downloadnetpbm-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.html187
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, &quot;PPM using the red, green, and blue colors that the
+scanner in question uses.&quot;
+
+<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 &quot;magic number&quot; for identifying the file type.
+A ppm image's magic number is the two characters &quot;P6&quot;.
+<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 &quot;nonlinear.&quot; 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 &quot;linear,&quot; 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 &quot;#&quot; 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: &quot;plain&quot; PPM format.  The format above, which generally
+considered the normal one, is known as the &quot;raw&quot; 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>