cjpeg(1)





NAME

     cjpeg - compress an image file to a JPEG file


SYNOPSIS

     cjpeg [ -quality N ] [ -grayscale ] [ -optimize ] [ -targa ]
     [ -maxmemory N ] [ -restart N ] [ -smooth N ] [ -verbose ] [
     -debug ] [ -arithmetic ] [ -nointerleave ] [ -qtables file ]
     [ -sample HxV[,...] ] [ filename ]


DESCRIPTION

     cjpeg compresses the named image file, or the standard input
     if  no  file  is named, and produces a JPEG/JFIF file on the
     standard output.  The currently supported input file formats
     are:  PPM  (PBMPLUS  color  format), PGM (PBMPLUS gray-scale
     format), GIF, Targa, and RLE (Utah Raster  Toolkit  format).
     (RLE is supported only if the URT library is available.)


OPTIONS

     All switch names may be abbreviated; for example, -grayscale
     may  be  written -gray or -gr.  Most of the "basic" switches
     can be abbreviated to as little as one  letter.   Upper  and
     lower  case  are equivalent (thus -GIF is the same as -gif).
     British spellings  are  also  accepted  (e.g.,  -greyscale),
     though for brevity these are not mentioned below.

     The basic switches are:

     -quality N
          Scale quantization  tables  to  adjust  image  quality.
          Quality  is  0  (worst)  to  100 (best); default is 75.
          (See below for more info.)

     -grayscale
          Create monochrome JPEG file from color input.  Be  sure
          to  use  this  switch  when compressing a grayscale GIF
          file, because  cjpeg  isn't  bright  enough  to  notice
          whether a GIF file uses only shades of gray.  By saying
          -grayscale, you'll get a smaller JPEG file  that  takes
          less time to process.

     -optimize
          Perform optimization of  entropy  encoding  parameters.
          Without  this,  default  encoding  parameters are used.
          -optimize usually makes the JPEG file a little smaller,
          but  cjpeg  runs  somewhat  slower  and needs much more
          memory.  Image quality and speed of  decompression  are
          unaffected by -optimize.

     -targa
          Input file is Targa format.  Targa files  that  contain
          an  "identification"  field  will  not be automatically
          recognized by cjpeg; for such files  you  must  specify
          -targa to make cjpeg treat the input as Targa format.

     The -quality switch lets you trade off compressed file  size
     against  quality  of the reconstructed image: the higher the
     quality setting, the larger the JPEG file,  and  the  closer
     the  output  image  will be to the original input.  Normally
     you want to use the lowest quality setting  (smallest  file)
     that  decompresses into something visually indistinguishable
     from the original image.  For this purpose the quality  set-
     ting should be between 50 and 95; the default of 75 is often
     about right.  If you see defects at -quality 75, then go  up
     5 or 10 counts at a time until you are happy with the output
     image.  (The optimal setting will vary  from  one  image  to
     another.)

     -quality 100 will generate a quantization table of all  1's,
     eliminating  loss  in  the  quantization  step (but there is
     still information loss in subsampling, as well  as  roundoff
     error).  This setting is mainly of interest for experimental
     purposes.  Quality values above about 95 are not recommended
     for  normal  use;  the compressed file size goes up dramati-
     cally for hardly any gain in output image quality.

     In the other direction, quality values below 50 will produce
     very small files of low image quality.  Settings around 5 to
     10 might be useful in preparing an index of  a  large  image
     library, for example.  Try -quality 2 (or so) for some amus-
     ing Cubist effects.  (Note: quality values  below  about  25
     generate  2-byte  quantization  tables, which are considered
     optional in the JPEG standard.  cjpeg emits a  warning  mes-
     sage  when  you give such a quality value, because some com-
     mercial JPEG programs may be unable to decode the  resulting
     file.)

     Switches for advanced users:

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

     -restart N
          Emit a JPEG restart marker every N MCU rows, or every N
          MCU  blocks if "B" is attached to the number.  -restart
          0 (the default) means no restart markers.

     -smooth N
          Smooth the input image to  eliminate  dithering  noise.
          N,  ranging  from  1  to 100, indicates the strength of
          smoothing.  0 (the default) means no smoothing.

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

     -debug
          Same as -verbose.

     The -restart option inserts extra markers that allow a  JPEG
     decoder   to   resynchronize  after  a  transmission  error.
     Without restart markers, any damage  to  a  compressed  file
     will  usually  ruin the image from the point of the error to
     the end of the image; with restart markers,  the  damage  is
     usually  confined to the portion of the image up to the next
     restart marker.  Of course, the restart markers occupy extra
     space.   We  recommend  -restart  1  for images that will be
     transmitted across unreliable networks such as Usenet.

     The -smooth option filters the input to eliminate fine-scale
     noise.   This  is  often useful when converting GIF files to
     JPEG: a moderate smoothing factor of 10 to 50  gets  rid  of
     dithering patterns in the input file, resulting in a smaller
     JPEG file and a better-looking image.  Too large a smoothing
     factor will visibly blur the image, however.

     Switches for wizards:

     -arithmetic
          Use arithmetic coding rather than Huffman coding.  (Not
          currently supported for legal reasons.)

     -nointerleave
          Generate noninterleaved JPEG file (not yet supported).

     -qtables file
          Use the quantization  tables  given  in  the  specified
          file.   The  file should contain one to four tables (64
          values each) as plain text.  Comments preceded  by  '#'
          may be included in the file.  The tables are implicitly
          numbered 0,1,etc.  If -quality N is also specified, the
          values  in  the  file  are  scaled according to cjpeg's
          quality scaling curve.

     -sample HxV[,...]
          Set JPEG sampling factors.  If you  specify  fewer  H/V
          pairs  than  there  are  components, the remaining com-
          ponents are set to 1x1 sampling.  The  default  setting
          is equivalent to -sample 2x2.

     The "wizard" switches are intended for experimentation  with
     JPEG.  If you don't know what you are doing, don't use them.
     You can easily produce files with worse image quality and/or
     poorer   compression   than  you'll  get  from  the  default
     settings.  Furthermore, these switches should  not  be  used
     when  making files intended for general use, because not all
     JPEG implementations will  support  unusual  JPEG  parameter
     settings.


EXAMPLES

     This example compresses the PPM file foo.ppm with a  quality
     factor of 60 and saves the output as foo.jpg:

          cjpeg -quality 60 foo.ppm > foo.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

djpeg(1)

AUTHOR

     Independent JPEG Group


BUGS

     Arithmetic coding and interleaved output not yet supported.

     Not all variants of Targa file format are supported.

     The -targa switch is not a bug, it's a feature.   (It  would
     be  a  bug  if the Targa format designers had not been clue-
     less.)

     Still not as fast as we'd like.