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

FreeBSD Manual Pages


home | help
Jpegtopnm User Manual(0)			      Jpegtopnm	User Manual(0)

       jpegtopnm - convert JPEG/JFIF file to PPM or PGM	image

       jpegtopnm    [-dct   {int|fast|float}]	[-nosmooth]   [-maxmemory   N]
       [{-adobe|-notadobe}] [-comments]	[-dumpexif] [-exif=filespec]  [-multi-
       ple] [-repair] [-verbose] [-tracelevel N] [filename]

       Minimum	unique abbreviation of option is acceptable.  You may use dou-
       ble hyphens instead of single hyphen to denote options.	 You  may  use
       white space in place of the equals sign to separate an option name from
       its value.

       This program is part of Netpbm(1).

       jpegtopnm converts JFIF images to PPM or	PGM images.

       By default, jpegtopnm expects the input stream to contain one JFIF  im-
       age and produces	one PGM	or PPM image as	output.	 It fails if the input
       stream is empty.

       But with	the -multiple option, jpegtopnm	reads JFIF images sequentially
       from  the  input	 stream	 and writes one	PPM or PGM image to the	output
       stream for each JFIF input.  If the input stream	is empty,  so  is  the

       The  input  stream is the filename you specify or, if you don't specify
       filename, Standard Input.  The output stream is Standard	Output.

       If a JFIF input image is	of the grayscale variety, jpegtopnm  generates
       a PGM image.  Otherwise,	it generates a PPM image.

       Before Netpbm 10.11 (October 2002), jpegtopnm did not have the multiple
       image stream capability.	 From 10.11 through 10.22, Netpbm  always  be-
       haved  as if you	specified -multiple.  Starting with Netpbm 10.23 (July
       2004), Netpbm's default behavior	went back to  the  pre-10.11  behavior
       and  the	 new -multiple option selected the 10.12 behavior.  The	reason
       for the reversion was that there	were discovered	 in  the  world	 files
       that  contain JFIF images followed by something other than another JFIF
       image.  The producers of	these files expect them	to work	with any  JFIF
       interpreter  because  most JFIF interpreters just stop reading the file
       after the first JFIF image.

       jpegtopnm uses the Independent JPEG Group's JPEG	library	 to  interpret
       the  input  file.  See <>  for in-
       formation on the	library.

       "JFIF" is the correct name for  the  image  format  commonly  known  as
       "JPEG."	Strictly speaking, JPEG	is a method of compression.  The image
       format using JPEG compression that is by	far the	most common  is	 JFIF.
       There is	also a subformat of TIFF that uses JPEG	compression.

       EXIF  is	 an  image  format that	is a subformat of JFIF (to wit,	a JFIF
       file that contains an EXIF header as an APP1 marker).   jpegtopnm  han-
       dles EXIF.

       JFIF  files  can	 have  either 8	bits per sample	or 12 bits per sample.
       The 8 bit variety is by far the most common.  There are two versions of
       the  IJG	 JPEG library.	One reads only 8 bit files and the other reads
       only 12 bit files.  You must link the  appropriate  one	of  these  li-
       braries	with jpegtopnm.	 Ordinarily, this means	the library is in your
       shared library search path when you run jpegtopnm.

       jpegtopnm generates output with either one byte or two bytes per	sample
       depending  on  whether  the JFIF	input has either 8 bits	or 12 bits per
       sample.	You can	use pamdepth to	reduce a two-byte-per-sample file to a
       one-byte-per-sample file	if you need to.

       If  the JFIF file uses the CMYK or YCCK color space, the	input does not
       actually	contain	enough information to know what	color each  pixel  is.
       To know what color a pixel is, one would	have to	know the properties of
       the inks	to which the color space  refers.   jpegtopnm  interprets  the
       colors  using  the common transformation	which assumes all the inks are
       simply subtractive and linear.

       See the jpegtopnm manual(1) for information on how images lose  quality
       when you	convert	to and from JFIF.

       The options are only for	advanced users:

       -dct int
	      Use integer DCT method (default).

       -dct fast
	      Use fast integer DCT (less accurate).

       -dct float
	      Use  floating-point  DCT	method.	  The  float  method  is  very
	      slightly more accurate than the int method, but is  much	slower
	      unless your machine has very fast	floating-point hardware.  Also
	      note that	results	of the floating-point method may vary slightly
	      across  machines,	while the integer methods should give the same
	      results everywhere.  The fast integer method is much less	 accu-
	      rate than	the other two.

	      Use a faster, lower-quality upsampling routine.

       -maxmemory N
	      Set  limit  on the amount	of memory jpegtopnm uses in processing
	      large images.  Value is in thousands of bytes,  or  millions  of
	      bytes if "M" is suffixed to the number.  For example, -maxmemory
	      4m selects 4000000 bytes.	 If jpegtopnm  needs  more  space,  it
	      uses temporary files.


	      There  are  two variations on the	CMYK (and likewise YCCK) color
	      space that may be	used in	the JFIF input.	 In the	normal one,  a
	      zero  value for a	color components indicates absence of ink.  In
	      the other, a zero	value means the	 maximum  ink  coverage.   The
	      latter  is  used	by Adobe Photoshop when	it creates a bare JFIF
	      output file (but not when	it creates JFIF	output as part of  En-
	      capsulated Postscript output).

	      These  options  tell jpegtopnm which version of the CMYK or YCCK
	      color space the image uses.  If you specify  neither,  jpegtopnm
	      tries  to	 figure	it out on its own.  In the present version, it
	      doesn't try very hard at all: It just assumes the	Photoshop ver-
	      sion,  since  Photoshop  and  its	 emulators seem	to be the main
	      source of	CMYK and YCCK images.  But with	experience of use, fu-
	      ture versions might be more sophisticated.

	      If  the  JFIF  image  does not indicate that it is CMYK or YCCK,
	      these options have no effect.

	      If you don't use the right one of	these options, the symptom  is
	      output that looks	like a negative.

	      Print  the  interpreted contents of any Exif header in the input
	      file to the Standard Error file.	Similar	to the	program	 jhead
	      (not part	of the Netpbm package).

	      This option was added in Netpbm 9.19 (September 2001).

	      Extract the contents of the EXIF header from the input image and
	      write it to the file filespec.  filespec=-  means	 write	it  to
	      Standard	Output.	  When	you  write the EXIF header to Standard
	      Output, jpegtopnm	does not output	the converted image (which  is
	      what normally would go to	Standard Output) at all.

	      jpegtopnm	 writes	the contents of	the EXIF header	byte-for-byte,
	      starting with the	two byte length	field (which  length  includes
	      those two	bytes).

	      You can use this file as input to	pnmtojpeg to insert an identi-
	      cal EXIF header into a new JFIF image.

	      If there is no EXIF header, jpegtopnm writes two bytes of	binary
	      zero and nothing else.

	      An  EXIF	header takes the form of a JFIF	APP1 marker.  Only the
	      first such marker	within the JFIF	header counts.

	      This option was added in Netpbm 9.19 (September 2001).

	      Read multiple JFIF images	sequentially from  the	input  stream.
	      See Description section <#description>  for details.

	      This option was new in Netpbm 10.23 (July	2004).

	      If  the  JFIF input is invalid, try to salvage whatever informa-
	      tion is there and	produce	a valid	PNM image as output.

	      Without this option, some	 invalid  input	 causes	 jpegtopnm  to
	      fail,  and  what	output it produces is undefined.  With -repair
	      such invalid input causes	jpegtopnm to succeed instead.

	      But note that there are some forms of invalid input that	always
	      cause  jpegtopnm to fail and others that always cause it to sal-
	      vage image information and succeed.

	      One particular case where	-repair	makes a	difference is the com-
	      mon  case	 that  the  file is truncated somewhere	after the JFIF
	      header.  Without -repair,	that always  causes  a	failure;  with
	      -repair it always	causes success.	 Because the image information
	      is laid out generally top	to bottom in the JFIF stream, the  im-
	      age  jpegtopnm  produces	in this	case has the proper image con-
	      tents at the top,	but the	bottom is padded with gray.

	      This option was new in  Netpbm  10.38.0  (March  2007).	Before
	      that, jpegtopnm always fails in the cases	in question.

	      Print any	comments in the	input file to the Standard Error file.

	      Print details about the conversion to the	Standard Error file.

       -tracelevel n
	      Turn  on the JPEG	library's trace	messages to the	Standard Error
	      file.  A higher value of n gets more trace  information.	 -ver-
	      bose implies a trace level of at least 1.

       This  example  converts the color JFIF file foo.jpg to a	PPM file named

	   jpegtopnm foo.jpg >foo.ppm

       You can use pnmquant to color quantize the result, i.e. to  reduce  the
       number  of  distinct  colors in the image.  In fact, you	may have to if
       you want	to convert the PPM file	to certain other  formats.   ppmdither
       Does a more sophisticated quantization.

       Use pamscale to change the dimensions of	the resulting image.

       Use ppmtopgm  to	convert	a color	JFIF file to a grayscale PGM file.

       You can easily use these	converters together.  E.g.:

	   jpegtopnm foo.jpg | ppmtopgm	| pamscale .25 >foo.pgm

       -dct fast and/or	-nosmooth gain speed at	a small	sacrifice in quality.

       If  you are fortunate enough to have very fast floating point hardware,
       -dct float may be even faster than -dct fast.   But  on	most  machines
       -dct float is slower than -dct int; in this case	it is not worth	using,
       because its theoretical accuracy	advantage is too small to be  signifi-
       cant in practice.

       Another	program,  djpeg, is similar.  djpeg is maintained by the Inde-
       pendent JPEG Group and packaged with the	JPEG library  which  jpegtopnm
       uses  for all its JPEG work.  Because of	that, you may expect it	to ex-
       ploit more current JPEG features.  Also,	since you have to have the li-
       brary  to run jpegtopnm,	but not	vice versa, cjpeg may be more commonly

       On the other hand, djpeg	does not use the NetPBM	libraries to  generate
       its  output,  as	all the	NetPBM tools such as jpegtopnm do.  This means
       it is less likely to be consistent with all  the	 other	programs  that
       deal with the NetPBM formats.  Also, the	command	syntax of jpegtopnm is
       consistent with that of the other Netpbm	tools, unlike djpeg.

	      If this environment variable is set, its value  is  the  default
	      memory  limit.   The  value  is  specified  as described for the
	      -maxmemory option.  An explicit -maxmemory  option overrides any

       ppm(5),	pgm(5),	 pnmtojpeg(1),	pnmquant(1), pamscale(1), ppmtopgm(1),
       ppmdither(1), pamdepth(1),

       djpeg man page, cjpeg man page, jpegtran	man page, rdjpgcom  man	 page,
       wrjpgcom	man page, jhead	man page

       Wallace,	 Gregory  K.   "The  JPEG Still	Picture	Compression Standard",
       Communications of the ACM, April	1991 (vol. 34, no. 4), pp. 30-44.

       jpegtopnm and this manual were derived in large part from djpeg,	by the
       Independent JPEG	Group.	The program is otherwise by Bryan Henderson on
       March 19, 2000.

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

netpbm documentation		13 October 2002	      Jpegtopnm	User Manual(0)


Want to link to this manual page? Use this URL:

home | help