1991-12-12 19:00:00 -05:00
|
|
|
USAGE instructions for the Independent JPEG Group's JPEG software
|
|
|
|
=================================================================
|
|
|
|
|
1992-03-16 19:00:00 -05:00
|
|
|
INTRODUCTION
|
|
|
|
|
1991-12-12 19:00:00 -05:00
|
|
|
This distribution contains software to implement JPEG image compression and
|
|
|
|
decompression. JPEG (pronounced "jay-peg") is a standardized compression
|
1992-03-16 19:00:00 -05:00
|
|
|
method for full-color and gray-scale images. JPEG is designed to handle
|
|
|
|
"real-world" scenes, for example scanned photographs. Cartoons, line
|
|
|
|
drawings, and other non-realistic images are not JPEG's strong suit; on this
|
|
|
|
sort of material you may get poor image quality and/or little compression.
|
|
|
|
|
|
|
|
JPEG is lossy, meaning that the output image is not necessarily identical to
|
|
|
|
the input image. Hence you should not use JPEG if you have to have identical
|
|
|
|
output bits. However, on typical real-world images, very good compression
|
|
|
|
levels can be obtained with no visible change, and amazingly high compression
|
|
|
|
is possible if you can tolerate a low-quality image. You can trade off image
|
|
|
|
quality against file size by adjusting the compressor's "quality" setting.
|
1991-12-12 19:00:00 -05:00
|
|
|
|
|
|
|
This file describes usage of the standard programs "cjpeg" and "djpeg" that
|
1992-03-16 19:00:00 -05:00
|
|
|
can be built directly from the distributed C code. See the README file for
|
1991-12-12 19:00:00 -05:00
|
|
|
hints on incorporating the JPEG software into other programs.
|
|
|
|
|
|
|
|
If you are on a Unix machine you may prefer to read the Unix-style manual
|
|
|
|
pages in files cjpeg.1 and djpeg.1.
|
|
|
|
|
|
|
|
NOTE: at some point we will probably redesign the user interface, so the
|
|
|
|
command line switches described here will change.
|
|
|
|
|
|
|
|
|
1992-03-16 19:00:00 -05:00
|
|
|
GENERAL USAGE
|
|
|
|
|
1991-12-12 19:00:00 -05:00
|
|
|
We provide two programs, cjpeg to compress an image file into JPEG format,
|
|
|
|
and djpeg to decompress a JPEG file back into a conventional image format.
|
|
|
|
|
|
|
|
On Unix-like systems, you say:
|
|
|
|
cjpeg [switches] [imagefile] >jpegfile
|
|
|
|
or
|
|
|
|
djpeg [switches] [jpegfile] >imagefile
|
|
|
|
The programs read the specified input file, or standard input if none is
|
|
|
|
named. They always write to standard output (with trace/error messages to
|
|
|
|
standard error). These conventions are handy for piping images between
|
|
|
|
programs.
|
|
|
|
|
1992-03-16 19:00:00 -05:00
|
|
|
On most non-Unix systems, you say:
|
1991-12-12 19:00:00 -05:00
|
|
|
cjpeg [switches] imagefile jpegfile
|
|
|
|
or
|
|
|
|
djpeg [switches] jpegfile imagefile
|
1992-03-16 19:00:00 -05:00
|
|
|
i.e., both the input and output files are named on the command line. This
|
|
|
|
style is a little more foolproof, and it loses no functionality if you don't
|
|
|
|
have pipes. (You can get this style on Unix too, if you prefer, by defining
|
|
|
|
TWO_FILE_COMMANDLINE when you compile the programs; see SETUP.)
|
1991-12-12 19:00:00 -05:00
|
|
|
|
|
|
|
The currently supported image 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.)
|
|
|
|
cjpeg recognizes the input image format automatically, with the exception
|
1992-03-16 19:00:00 -05:00
|
|
|
of some Targa-format files. You have to tell djpeg which format to generate.
|
1991-12-12 19:00:00 -05:00
|
|
|
|
|
|
|
The only JPEG file format currently supported is the JFIF format. Support for
|
|
|
|
the TIFF/JPEG format will probably be added at some future date.
|
|
|
|
|
|
|
|
|
1992-03-16 19:00:00 -05:00
|
|
|
CJPEG DETAILS
|
|
|
|
|
1991-12-12 19:00:00 -05:00
|
|
|
The command line switches for cjpeg are:
|
|
|
|
|
|
|
|
-Q quality Scale quantization tables to adjust image quality.
|
|
|
|
Quality is 0 (worst) to 100 (best); default is 75.
|
|
|
|
(See below for more info.)
|
|
|
|
|
|
|
|
-o Perform optimization of entropy encoding parameters.
|
|
|
|
Without this, default encoding parameters are used.
|
|
|
|
-o usually makes the JPEG file a little smaller, but
|
1992-03-16 19:00:00 -05:00
|
|
|
cjpeg runs somewhat slower and needs much more memory.
|
|
|
|
Image quality and speed of decompression are unaffected
|
|
|
|
by -o.
|
1991-12-12 19:00:00 -05:00
|
|
|
|
|
|
|
-T 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
|
|
|
|
-T to force cjpeg to treat the input as Targa format.
|
|
|
|
|
|
|
|
-I Generate noninterleaved JPEG file (not yet supported).
|
|
|
|
|
|
|
|
-a Use arithmetic coding rather than Huffman coding.
|
|
|
|
(Not currently supported for legal reasons.)
|
|
|
|
|
|
|
|
-d Enable debug printout. More -d's give more printout.
|
|
|
|
Also, version information is printed at startup.
|
|
|
|
|
1992-03-16 19:00:00 -05:00
|
|
|
-m memory 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, -m 4m selects 4000000 bytes. If more
|
|
|
|
space is needed, temporary files will be used.
|
|
|
|
|
1991-12-12 19:00:00 -05:00
|
|
|
The -Q switch lets you trade off compressed file size against quality of the
|
|
|
|
reconstructed image: the higher the -Q 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 -Q setting (smallest file) that decompresses into something
|
|
|
|
visually indistinguishable from the original image. For this purpose the -Q
|
|
|
|
setting should be between 50 and 95; the default of 75 is often about right.
|
|
|
|
If you see defects at -Q 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.)
|
|
|
|
|
|
|
|
-Q 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. -Q values above about 95 are NOT recommended for normal use; the
|
|
|
|
compressed file size goes up dramatically for hardly any gain in output image
|
|
|
|
quality.
|
|
|
|
|
|
|
|
In the other direction, -Q 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 -Q 2 (or so) for some
|
|
|
|
amusing Cubist effects. (Note: -Q values below about 25 generate 2-byte
|
|
|
|
quantization tables, which are considered optional in the JPEG standard.
|
|
|
|
cjpeg emits a warning message when you give such a -Q value, because some
|
|
|
|
commercial JPEG programs may be unable to decode the resulting file.)
|
|
|
|
|
|
|
|
|
1992-03-16 19:00:00 -05:00
|
|
|
DJPEG DETAILS
|
|
|
|
|
1991-12-12 19:00:00 -05:00
|
|
|
The command line switches for djpeg are:
|
|
|
|
|
|
|
|
-G Select GIF output format (implies -q, with default
|
|
|
|
of 256 colors).
|
|
|
|
|
|
|
|
-P Select PPM or PGM output format (this is the default).
|
|
|
|
PGM is emitted if the JPEG file is gray-scale or if -g
|
|
|
|
is specified.
|
|
|
|
|
|
|
|
-R Select RLE output format. Requires URT library.
|
|
|
|
|
|
|
|
-T Select Targa output format. Gray-scale format is
|
|
|
|
emitted if the JPEG file is gray-scale or if -g is
|
|
|
|
specified; otherwise, colormapped format is emitted
|
|
|
|
if -q is specified; otherwise, 24-bit full-color
|
|
|
|
format is emitted.
|
|
|
|
|
|
|
|
-g Force gray-scale output even if input is color.
|
|
|
|
|
1992-03-16 19:00:00 -05:00
|
|
|
-q N Quantize to N colors. This reduces the number of
|
|
|
|
colors in the output image so that it can be displayed
|
|
|
|
on a colormapped display or stored in a colormapped
|
|
|
|
file format. For example, if you have an 8-bit
|
|
|
|
display, you'd need to quantize to 256 or fewer colors.
|
1991-12-12 19:00:00 -05:00
|
|
|
|
1992-03-16 19:00:00 -05:00
|
|
|
-D Do not use dithering in color quantization.
|
1991-12-12 19:00:00 -05:00
|
|
|
By default, Floyd-Steinberg dithering is applied when
|
|
|
|
quantizing colors, but on some images dithering may
|
|
|
|
result in objectionable "graininess". If that
|
|
|
|
happens, you can turn off dithering with -D.
|
1992-03-16 19:00:00 -05:00
|
|
|
-D is ignored unless you also say -q or -G.
|
1991-12-12 19:00:00 -05:00
|
|
|
|
1992-03-16 19:00:00 -05:00
|
|
|
-1 Use one-pass instead of two-pass color quantization.
|
|
|
|
The one-pass method is faster and needs less memory,
|
|
|
|
but it produces a lower-quality image.
|
|
|
|
-1 is ignored unless you also say -q or -G. Also,
|
|
|
|
the one-pass method is always used for gray-scale
|
|
|
|
output (the two-pass method is no improvement then).
|
|
|
|
|
|
|
|
-b Perform cross-block smoothing. This is quite
|
|
|
|
memory-intensive and only seems to improve the image
|
|
|
|
at very low quality settings (-Q 10 to 20 or so).
|
|
|
|
At normal -Q settings it may make the image worse.
|
1991-12-12 19:00:00 -05:00
|
|
|
|
|
|
|
-d Enable debug printout. More -d's give more printout.
|
|
|
|
Also, version information is printed at startup.
|
|
|
|
|
1992-03-16 19:00:00 -05:00
|
|
|
-m memory 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, -m 4m selects 4000000 bytes. If more
|
|
|
|
space is needed, temporary files will be used.
|
|
|
|
|
|
|
|
|
|
|
|
HINTS
|
|
|
|
|
|
|
|
Avoid running an image through a series of JPEG compression/decompression
|
|
|
|
cycles. Image quality loss will accumulate; after ten or so cycles the image
|
|
|
|
may be noticeably worse than it was after one cycle. It's best to use a
|
|
|
|
lossless format while manipulating an image, then convert to JPEG format when
|
|
|
|
you are ready to file the image away.
|
|
|
|
|
|
|
|
The -o option to cjpeg is worth using when you are making a "final" version
|
|
|
|
for posting or archiving. It's also a win when you are using low -Q settings
|
|
|
|
to make very small JPEG files; the percentage improvement is often a lot more
|
|
|
|
than it is on larger files.
|
|
|
|
|
|
|
|
The default memory usage limit (-m) is set when the software is compiled.
|
|
|
|
If you get an "insufficient memory" error, try specifying a smaller -m value,
|
|
|
|
even -m 0 to use the absolute minimum space. You may want to recompile with
|
|
|
|
a smaller default value if this happens often.
|
|
|
|
|
|
|
|
djpeg with two-pass color quantization requires a good deal of space; on
|
|
|
|
MS-DOS machines it may run out of memory even with -m 0. In that case you
|
|
|
|
can still decompress, with some loss of image quality, by specifying -1
|
|
|
|
for one-pass quantization.
|
|
|
|
|
|
|
|
If more space is needed than will fit in the available main memory (as
|
|
|
|
determined by -m), temporary files will be used. (MS-DOS versions will try to
|
|
|
|
get extended or expanded memory first.) The temporary files are often rather
|
|
|
|
large: in typical cases they occupy three bytes per pixel, for example
|
|
|
|
3*800*600 = 1.44Mb for an 800x600 image. If you don't have enough free disk
|
|
|
|
space, leave out -o (for cjpeg) or specify -1 (for djpeg). On MS-DOS, the
|
|
|
|
temporary files are created in the directory named by the TMP or TEMP
|
|
|
|
environment variable, or in the current directory if neither of those exist.
|
|
|
|
Amiga implementations put the temp files in the directory named by JPEGTMP:,
|
|
|
|
so be sure to assign JPEGTMP: to a disk partition with adequate free space.
|