Provided by: netpbm_11.07.00-2_amd64 bug

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] [-multiple] [-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  behaved  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
       http://www.ijg.org http://www.ijg.org  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  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.

OPTIONS

       In addition to the options common to all programs based on libnetpbm (most notably -quiet,
       see
        Common Options ⟨index.html#commonoptions⟩ ), 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 machines, 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 latter 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 version, since Photoshop and its emulators seem to be the main source  of
              CMYK  and  YCCK  images.  But with experience of use, future 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  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 identical 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  Description
              section ⟨#description⟩  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 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 salvage image information and succeed.

              One  particular  case  where -repair makes a difference is the common 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  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 information.

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

       Another program, djpeg, is similar.  djpeg is maintained by the Independent 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 consistent 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),  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.

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