DOC HOME SITE MAP MAN PAGES GNU INFO SEARCH PRINT BOOK
 

jpegtran(1)




JPEGTRAN(1)              USER COMMANDS                JPEGTRAN(1)


NAME

     jpegtran - lossless transformation of JPEG files


SYNOPSIS

     jpegtran [ options ] [ filename ]


DESCRIPTION

     jpegtran performs various  useful  transformations  of  JPEG
     files.   It  can translate the coded representation from one
     variant of JPEG to another, for example from  baseline  JPEG
     to progressive JPEG or vice versa.  It can also perform some
     rearrangements of the image data,  for  example  turning  an
     image from landscape to portrait format by rotation.

     jpegtran works by rearranging the compressed data (DCT coef-
     ficients),  without  ever  fully decoding the image.  There-
     fore, its transformations are lossless:  there is  no  image
     degradation  at  all,  which  would  not be true if you used
     djpeg followed by cjpeg to accomplish the  same  conversion.
     But  by the same token, jpegtran cannot perform lossy opera-
     tions such as changing the image quality.

     jpegtran reads the named JPEG/JFIF  file,  or  the  standard
     input  if no file is named, and produces a JPEG/JFIF file on
     the standard output.


OPTIONS

     All switch names may be abbreviated; for example,  -optimize
     may  be  written  -opt  or  -o.   Upper  and  lower case are
     equivalent.  British  spellings  are  also  accepted  (e.g.,
     -optimise),  though  for  brevity  these  are  not mentioned
     below.

     To specify the coded JPEG representation used in the  output
     file,  jpegtran  accepts a subset of the switches recognized
     by cjpeg:

     -optimize
          Perform optimization of entropy encoding parameters.

     -progressive
          Create progressive JPEG file.

     -restart N
          Emit a JPEG restart marker every N MCU rows, or every N
          MCU blocks if "B" is attached to the number.

     -scans file
          Use the scan script given in the specified text file.

     See cjpeg(1) for more details about these switches.  If  you
     specify  none  of  these switches, you get a plain baseline-

                   Last change: 3 August 1997                   1

JPEGTRAN(1)              USER COMMANDS                JPEGTRAN(1)

     JPEG output file.  The quality  setting  and  so  forth  are
     determined by the input file.

     The image can be losslessly transformed  by  giving  one  of
     these switches:

     -flip horizontal
          Mirror image horizontally (left-right).

     -flip vertical
          Mirror image vertically (top-bottom).

     -rotate 90
          Rotate image 90 degrees clockwise.

     -rotate 180
          Rotate image 180 degrees.

     -rotate 270
          Rotate image 270 degrees clockwise (or 90 ccw).

     -transpose
          Transpose image (across UL-to-LR axis).

     -transverse
          Transverse transpose (across UR-to-LL axis).

     The transpose transformation has no  restrictions  regarding
     image  dimensions.  The other transformations operate rather
     oddly if the image dimensions are not a multiple of the iMCU
     size  (usually  8  or  16  pixels),  because  they  can only
     transform complete blocks of DCT  coefficient  data  in  the
     desired way.

     jpegtran's default behavior when  transforming  an  odd-size
     image  is  designed  to  preserve  exact  reversibility  and
     mathematical consistency  of  the  transformation  set.   As
     stated,  transpose  is  able  to flip the entire image area.
     Horizontal mirroring leaves any partial iMCU column  at  the
     right  edge  untouched,  but is able to flip all rows of the
     image.  Similarly, vertical  mirroring  leaves  any  partial
     iMCU  row  at the bottom edge untouched, but is able to flip
     all columns.  The  other  transforms  can  be  built  up  as
     sequences of transpose and flip operations; for consistency,
     their actions on edge pixels are defined to be the  same  as
     the  end  result  of  the  corresponding  transpose-and-flip
     sequence.

     For  practical  use,  you  may   prefer   to   discard   any
     untransformable  edge  pixels  rather than having a strange-
     looking strip along the  right  and/or  bottom  edges  of  a
     transformed image.  To do this, add the -trim switch:

                   Last change: 3 August 1997                   2

JPEGTRAN(1)              USER COMMANDS                JPEGTRAN(1)

     -trim
          Drop non-transformable edge blocks.

     Obviously, a transformation with -trim is not reversible, so
     strictly speaking jpegtran with this switch is not lossless.
     Also, the expected  mathematical  equivalences  between  the
     transformations no longer hold.  For example, -rot 270 -trim
     trims only the bottom edge, but -rot 90  -trim  followed  by
     -rot 180 -trim trims both edges.

     Another not-strictly-lossless transformation switch is:

     -grayscale
          Force grayscale output.

     This option discards the chrominance channels if  the  input
     image  is  YCbCr (ie, a standard color JPEG), resulting in a
     grayscale JPEG file.  The  luminance  channel  is  preserved
     exactly, so this is a better method of reducing to grayscale
     than decompression,  conversion,  and  recompression.   This
     switch is particularly handy for fixing a monochrome picture
     that was mistakenly encoded as a color  JPEG.   (In  such  a
     case,  the  space savings from getting rid of the near-empty
     chroma channels won't be large; but the decoding time for  a
     grayscale  JPEG  is substantially less than that for a color
     JPEG.)

     jpegtran also recognizes these switches that control what to
     do with "extra" markers, such as comment blocks:

     -copy none
          Copy no extra markers from source file.   This  setting
          suppresses   all  comments  and  other  excess  baggage
          present in the source file.

     -copy comments
          Copy only comment markers.  This  setting  copies  com-
          ments  from  the  source  file,  but discards any other
          inessential data.

     -copy all
          Copy all extra markers.  This setting preserves miscel-
          laneous  markers found in the source file, such as JFIF
          thumbnails and Photoshop settings.  In some files these
          extra markers can be sizable.

     The default behavior  is  -copy  comments.   (Note:  in  IJG
     releases  v6  and v6a, jpegtran always did the equivalent of
     -copy none.)

     Additional switches recognized by jpegtran are:

                   Last change: 3 August 1997                   3

JPEGTRAN(1)              USER COMMANDS                JPEGTRAN(1)

     -maxmemory N
          Set limit for amount of memory  to  use  in  processing
          large  images.  Value is in thousands of bytes, or mil-
          lions of bytes if "M" is attached to the  number.   For
          example,  -max 4m selects 4000000 bytes.  If more space
          is needed, temporary files will be used.

     -outfile name
          Send output image to the named file,  not  to  standard
          output.

     -verbose
          Enable debug printout.  More  -v's  give  more  output.
          Also, version information is printed at startup.

     -debug
          Same as -verbose.


EXAMPLES

     This example converts a baseline JPEG  file  to  progressive
     form:

          jpegtran -progressive foo.jpg > fooprog.jpg

     This example rotates an image 90 degrees clockwise, discard-
     ing any unrotatable edge pixels:

          jpegtran -rot 90 -trim foo.jpg > foo90.jpg


ENVIRONMENT

     JPEGMEM
          If this environment variable is set, its value  is  the
          default  memory  limit.   The  value  is  specified  as
          described for the -maxmemory switch.  JPEGMEM overrides
          the  default  value specified when the program was com-
          piled, and itself is overridden by  an  explicit  -max-
          memory.


SEE ALSO

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


AUTHOR

     Independent JPEG Group


BUGS

     Arithmetic coding is not supported for legal reasons.

     The transform options can't transform odd-size  images  per-
     fectly.  Use -trim if you don't like the results without it.

                   Last change: 3 August 1997                   4

JPEGTRAN(1)              USER COMMANDS                JPEGTRAN(1)

     The entire image is read into memory and  then  written  out
     again,  even  in  cases  where  this isn't really necessary.
     Expect swapping on large images, especially when  using  the
     more complex transform options.

                   Last change: 3 August 1997                   5


Man(1) output converted with man2html