Jpegtopnm User Manual(0)               Jpegtopnm User Manual(0)



Table Of Contents


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


SYNOPSIS
       jpegtopnm  [-dct {int|fast|float}] [-nosmooth] [-maxmem-
       ory  N]  [{-adobe|-notadobe}]  [-comments]   [-dumpexif]
       [-exif=filespec]  [-multiple] [-verbose] [-tracelevel N]
       [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 con-
       tain 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, jpeg-
       topnm 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
       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 com-
       mon.  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
       pnmdepth 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 inter-
       prets the colors using the common  transformation  which
       assumes  all the inks are simply subtractive and linear.

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


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  thou-
              sands  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  like-
              wise  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 Encapsu-
              lated 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  Photo-
              shop  version,  since Photoshop and its emulators
              seem to be the  main  source  of  CMYK  and  YCCK
              images.   But with experience of use, future ver-
              sions 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  Stan-
              dard 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    for
              details.

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


       -comments
              Print any comments in the input file to the Stan-
              dard Error file.

       -verbose
              Print  details  about the conversion to the Stan-
              dard 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.



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  sacri-
       fice 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 cur-
       rent 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 JPEG-
              MEM.




SEE ALSO
       ppm(1), pgm(1), pnmtojpeg(1), pnmquant(1),  pamscale(1),
       ppmtopgm(1), ppmdither(1), pnmdepth(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.


LIMITATIONS
       Arithmetic coding is not offered for legal reasons.  The
       program could be much faster.


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.



netpbm documentation    13 October 2002Jpegtopnm User Manual(0)
