| .TH CJPEG 1 "4 November 1992" |
| .SH NAME |
| cjpeg \- compress an image file to a JPEG file |
| .SH SYNOPSIS |
| .B cjpeg |
| [ |
| .BI \-quality " N" |
| ] |
| [ |
| .B \-grayscale |
| ] |
| [ |
| .B \-optimize |
| ] |
| [ |
| .B \-targa |
| ] |
| [ |
| .BI \-maxmemory " N" |
| ] |
| [ |
| .BI \-restart " N" |
| ] |
| [ |
| .BI \-smooth " N" |
| ] |
| [ |
| .B \-verbose |
| ] |
| [ |
| .B \-debug |
| ] |
| [ |
| .B \-arithmetic |
| ] |
| [ |
| .B \-nointerleave |
| ] |
| [ |
| .BI \-qtables " file" |
| ] |
| [ |
| .BI \-sample " HxV[,...]" |
| ] |
| [ |
| .I filename |
| ] |
| .LP |
| .SH DESCRIPTION |
| .LP |
| .B 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.) |
| .SH OPTIONS |
| All switch names may be abbreviated; for example, |
| .B \-grayscale |
| may be written |
| .B \-gray |
| or |
| .BR \-gr . |
| Most of the "basic" switches can be abbreviated to as little as one letter. |
| Upper and lower case are equivalent (thus |
| .B \-GIF |
| is the same as |
| .BR \-gif ). |
| British spellings are also accepted (e.g., |
| .BR \-greyscale ), |
| though for brevity these are not mentioned below. |
| .PP |
| The basic switches are: |
| .TP |
| .BI \-quality " N" |
| Scale quantization tables to adjust image quality. Quality is 0 (worst) to |
| 100 (best); default is 75. (See below for more info.) |
| .TP |
| .B \-grayscale |
| Create monochrome JPEG file from color input. Be sure to use this switch when |
| compressing a grayscale GIF file, because |
| .B cjpeg |
| isn't bright enough to notice whether a GIF file uses only shades of gray. |
| By saying |
| .BR \-grayscale , |
| you'll get a smaller JPEG file that takes less time to process. |
| .TP |
| .B \-optimize |
| Perform optimization of entropy encoding parameters. Without this, default |
| encoding parameters are used. |
| .B \-optimize |
| usually makes the JPEG file a little smaller, but |
| .B cjpeg |
| runs somewhat slower and needs much more memory. Image quality and speed of |
| decompression are unaffected by |
| .BR \-optimize . |
| .TP |
| .B \-targa |
| Input file is Targa format. Targa files that contain an "identification" |
| field will not be automatically recognized by |
| .BR cjpeg ; |
| for such files you must specify |
| .B \-targa |
| to make |
| .B cjpeg |
| treat the input as Targa format. |
| .PP |
| The |
| .B \-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 setting should be between 50 and 95; the default of 75 is |
| often about right. If you see defects at |
| .B \-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.) |
| .PP |
| .B \-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 |
| .B not |
| recommended for normal use; the compressed file size goes up dramatically for |
| hardly any gain in output image quality. |
| .PP |
| 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 |
| .B \-quality |
| 2 (or so) for some amusing Cubist effects. (Note: quality |
| values below about 25 generate 2-byte quantization tables, which are |
| considered optional in the JPEG standard. |
| .B cjpeg |
| emits a warning message when you give such a quality value, because some |
| commercial JPEG programs may be unable to decode the resulting file.) |
| .PP |
| Switches for advanced users: |
| .TP |
| .BI \-maxmemory " N" |
| Set limit for amount of memory to use in processing large images. Value is |
| in thousands of bytes, or millions of bytes if "M" is attached to the |
| number. For example, |
| .B \-max 4m |
| selects 4000000 bytes. If more space is needed, temporary files will be used. |
| .TP |
| .BI \-restart " N" |
| Emit a JPEG restart marker every N MCU rows, or every N MCU blocks if "B" is |
| attached to the number. |
| .B \-restart 0 |
| (the default) means no restart markers. |
| .TP |
| .BI \-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. |
| .TP |
| .B \-verbose |
| Enable debug printout. More |
| .BR \-v 's |
| give more output. Also, version information is printed at startup. |
| .TP |
| .B \-debug |
| Same as |
| .BR \-verbose . |
| .PP |
| The |
| .B \-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 |
| .B \-restart 1 |
| for images that will be transmitted across unreliable networks such as Usenet. |
| .PP |
| The |
| .B \-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. |
| .PP |
| Switches for wizards: |
| .TP |
| .B \-arithmetic |
| Use arithmetic coding rather than Huffman coding. (Not currently |
| supported for legal reasons.) |
| .TP |
| .B \-nointerleave |
| Generate noninterleaved JPEG file (not yet supported). |
| .TP |
| .BI \-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 |
| .B \-quality |
| N is also specified, the values in the file are scaled according to |
| .BR cjpeg 's |
| quality scaling curve. |
| .TP |
| .BI \-sample " HxV[,...]" |
| Set JPEG sampling factors. If you specify fewer H/V pairs than there are |
| components, the remaining components are set to 1x1 sampling. The default |
| setting is equivalent to \fB\-sample 2x2\fR. |
| .PP |
| The "wizard" switches are intended for experimentation with JPEG. If you |
| don't know what you are doing, \fBdon't use them\fR. 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. |
| .SH EXAMPLES |
| .LP |
| This example compresses the PPM file foo.ppm with a quality factor of |
| 60 and saves the output as foo.jpg: |
| .IP |
| .B cjpeg \-quality |
| .I 60 foo.ppm |
| .B > |
| .I foo.jpg |
| .SH ENVIRONMENT |
| .TP |
| .B JPEGMEM |
| If this environment variable is set, its value is the default memory limit. |
| The value is specified as described for the |
| .B \-maxmemory |
| switch. |
| .B JPEGMEM |
| overrides the default value specified when the program was compiled, and |
| itself is overridden by an explicit |
| .BR \-maxmemory . |
| .SH SEE ALSO |
| .BR djpeg (1) |
| .br |
| .BR ppm (5), |
| .BR pgm (5) |
| .br |
| Wallace, Gregory K. "The JPEG Still Picture Compression Standard", |
| Communications of the ACM, April 1991 (vol. 34, no. 4), pp. 30-44. |
| .SH AUTHOR |
| Independent JPEG Group |
| .SH BUGS |
| Arithmetic coding and interleaved output not yet supported. |
| .PP |
| Not all variants of Targa file format are supported. |
| .PP |
| The |
| .B -targa |
| switch is not a bug, it's a feature. (It would be a bug if the Targa format |
| designers had not been clueless.) |
| .PP |
| Still not as fast as we'd like. |