dwww Home | Manual pages | Find package

Jpegtopnm User Manual(1)    General Commands Manual    Jpegtopnm User Manual(1)

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

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

       Minimum unique abbreviation of option is acceptable.  You may use double
       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.

DESCRIPTION
       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 image
       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
       output.

       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 inter-
       preter 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 ]8;;http://www.ijg.org\http://www.ijg.org]8;;\  for information 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 handles
       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 libraries 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 col-
       ors using the common transformation which assumes all the inks are  sim-
       ply subtractive and linear.

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

OPTIONS
       In addition to the options common to all  programs  based  on  libnetpbm
       (most  notably  -quiet,  see ]8;;index.html#commonoptions\ Common Options]8;;\ ), jpegtopnm recognizes the
       following command line options:

       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 ma-
              chines,  while  the  integer methods should give the same results
              everywhere.  The fast integer method is much less  accurate  than
              the other two.

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

       -adobe

       -notadobe
              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 lat-
              ter is used by Adobe Photoshop when it creates a bare JFIF output
              file (but not when it creates JFIF output as part of Encapsulated
              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.

       -dumpexif
              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).

       -exif=filespec
              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 Out-
              put, 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).

       -multiple
              Read multiple JFIF images sequentially  from  the  input  stream.
              See ]8;;#description\Description section]8;;\  for details.

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

       -repair
              If the JFIF input is invalid, try to salvage whatever information
              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 in-
              valid 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 -re-
              pair it always causes success.  Because the image information  is
              laid  out  generally  top to bottom in the JFIF stream, the image
              jpegtopnm produces in this case has the proper image contents  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.

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

       -verbose
              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.  -verbose
              implies a trace level of at least 1.

       -traceexif
              Print trace information about the processing of EXIF  header  in-
              formation.

              This option was new in Netpbm 11.02 (March 2023).

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

           jpegtopnm foo.jpg >foo.ppm

HINTS
       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,  be-
       cause  its theoretical accuracy advantage is too small to be significant
       in practice.

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

       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  con-
       sistent with that of the other Netpbm tools, unlike djpeg.

ENVIRONMENT
       JPEGMEM
              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
              JPEGMEM.

SEE ALSO
       ppm(1), pgm(1), pnmtojpeg(1), pnmquant(1), pamscale(1), ppmtopgm(1), pp-
       mdither(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", Com-
       munications of the ACM, April 1991 (vol. 34, no. 4), pp. 30-44.

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

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/jpegtopnm.html

netpbm documentation             20 March 2023         Jpegtopnm User Manual(1)

Generated by dwww version 1.16 on Tue Dec 16 04:49:57 CET 2025.