Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
PPM Format Specification(5)   File Formats Manual  PPM Format Specification(5)

NAME
       PPM - Netpbm color image	format

DESCRIPTION
       This program is part of Netpbm(1).

       The PPM format is a lowest common denominator color image file format.

       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 in-
       formation 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.

       It  should also be noted	that files often conform to this format	in ev-
       ery respect except the precise semantics	of the sample  values.	 These
       files are useful	because	of the way PPM is used as an intermediary for-
       mat.  They are informally called	PPM files, but to be  absolutely  pre-
       cise,  you  should  indicate the	variation from true PPM.  For example,
       "PPM using the red, green, and blue colors that the scanner in question
       uses."

       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."

THE FORMAT
       The  format  definition	is as follows.	You can	use the	libnetpbm(3) C
       subroutine library to read and interpret	the  format  conveniently  and
       accurately.

       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.

       Each PPM	image consists of the following:

       o      A	"magic number" for identifying the file	type.  A  ppm  image's
	      magic number is the two characters "P6".

       o

	      Whitespace (blanks, TABs,	CRs, LFs).

       o

	      A	width, formatted as ASCII characters in	decimal.

       o

	      Whitespace.

       o

	      A	height,	again in ASCII decimal.

       o

	      Whitespace.

       o

	      The  maximum color value (Maxval), again in ASCII	decimal.  Must
	      be less than 65536 and more than zero.

       o      A	single whitespace character (usually a newline).

       o      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  or-
	      der.  Each sample	is represented in pure binary by either	1 or 2
	      bytes.  If the Maxval is less than 256, it is  1	byte.	Other-
	      wise, it is 2 bytes.  The	most significant byte is first.

	      A	 row  of  an  image is horizontal.  A column is	vertical.  The
	      pixels in	the image are square and contiguous.

	      In the raster, the sample	values are "nonlinear."	They are  pro-
	      portional	 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 im-
	      ages to which this image might be	compared).

	      BT.709's range of	channel	values (16-240)	is irrelevant to PPM.

	      ITU-R Recommendation BT.709 is a renaming	 of  the  former  CCIR
	      Recommendation  709.  When CCIR was absorbed into	its parent or-
	      ganization, 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.

	      Note that	another	popular	color space is the newer sRGB.	A com-
	      mon variation from PPM is	to substitute this color space for the
	      one specified.  You can use pnmgamma  to	convert	 between  this
	      variation	and true PPM.

	      Note  that a common variation from the PPM format	is to have the
	      sample values be "linear," i.e. as specified above except	 with-
	      out  the gamma adjustment.  pnmgamma takes such a	PPM variant as
	      input and	produces a true	PPM as output.

       Strings starting	with "#" may be	comments, the same as with PBM(5).

       Note that you can use pamdepth to convert between a the format  with  1
       byte per	sample and the one with	2 bytes	per sample.

       All  characters	referred  to  herein  are encoded in ASCII.  "newline"
       refers to the character known in	ASCII as Line Feed or  LF.   A	"white
       space"  character  is space, CR,	LF, TAB, VT, or	FF (I.e. what the ANSI
       standard	C isspace() function calls white space).

   Plain PPM
       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 pbm(5) for  some
       commentary  on  how plain and raw formats relate	to one another and how
       to use them.

       The difference in the plain format is:

       o

	      There is exactly one image in a file.

       o

	      The magic	number is P3 instead of	P6.

       o

	      Each sample in the raster	is represented	as  an	ASCII  decimal
	      number (of arbitrary size).

       o

	      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	 sepa-
	      ration  between the blue sample of one pixel from	the red	sample
	      of the next pixel.

       o

	      No line should be	longer than 70 characters.

       Here is an example of a small image in this format.
       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

       There is	a newline character at the end of each of these	lines.

       Programs	that read this format should be	as lenient  as	possible,  ac-
       cepting anything	that looks remotely like a PPM image.

INTERNET MEDIA TYPE
       No  Internet  Media Type	(aka MIME type,	content	type) for PPM has been
       registered with IANA, but the value image/x-portable-pixmap is  conven-
       tional.

       Note  that the PNM Internet Media Type image/x-portable-anymap also ap-
       plies.

FILE NAME
       There are no requirements on the	name of	a PPM file, but	the convention
       is  to  use  the	 suffix	".ppm".	 "pnm" is also conventional, for cases
       where distinguishing between the	particular subformats of  PNM  is  not
       convenient.

COMPATIBILITY
       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 sam-
       ple.  Old programs may depend on	this.

       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.

SEE ALSO
       pnm(5), pgm(5), pbm(5), pam(5), programs	that process PPM(1)

DOCUMENT SOURCE
       This  manual  page was generated	by the Netpbm tool 'makeman' from HTML
       source.	The master documentation is at

	      http://netpbm.sourceforge.net/doc/ppm.html

netpbm documentation		09 October 2016	   PPM Format Specification(5)

NAME | DESCRIPTION | THE FORMAT | INTERNET MEDIA TYPE | FILE NAME | COMPATIBILITY | SEE ALSO | DOCUMENT SOURCE

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=ppm&sektion=5&manpath=FreeBSD+12.1-RELEASE+and+Ports>

home | help