Posting-Frequency: every 14 days
Last-modified: 1 March 1997
This article answers Frequently Asked Questions about JPEG image compression.
This is part 1, covering general questions and answers about JPEG. Part 2
gives system-specific hints and program recommendations. As always,
suggestions for improvement of this FAQ are welcome.
New since version of 1 February 1997:
* New section 21 explains how to find height/width in a JPEG file.
This article includes the following sections:
 What is JPEG?
 Why use JPEG?
 When should I use JPEG, and when should I stick with GIF?
 How well does JPEG compress images?
 What are good "quality" settings for JPEG?
 Where can I get JPEG software?
 How do I view JPEG images posted on Usenet?
More advanced questions:
 What is color quantization?
 What are some rules of thumb for converting GIF images to JPEG?
 Does loss accumulate with repeated compression/decompression?
 What is progressive JPEG?
 Can I make a transparent JPEG?
 Isn't there a lossless JPEG?
 Why all the argument about file formats?
 How do I recognize which file format I have, and what do I do about it?
 How does JPEG work?
 What about arithmetic coding?
 Could an FPU speed up JPEG? How about a DSP chip?
 Isn't there an M-JPEG standard for motion pictures?
 What if I need more than 8-bit precision?
 How can my program extract image dimensions from a JPEG file?
 Where can I learn about using images on the World Wide Web?
 Where are FAQ lists archived?
This article and its companion are posted every 2 weeks. If you can't find
part 2, you can get it from the news.answers archive at rtfm.mit.edu
(see " Where are FAQ lists archived?"). Part 2 changes very frequently;
get a new copy if the one you are reading is more than a couple months old.
Subject:  What is JPEG?
JPEG (pronounced "jay-peg") is a standardized image compression mechanism.
JPEG stands for Joint Photographic Experts Group, the original name of the
committee that wrote the standard.
JPEG is designed for compressing either full-color or gray-scale images
of natural, real-world scenes. It works well on photographs, naturalistic
artwork, and similar material; not so well on lettering, simple cartoons,
or line drawings. JPEG handles only still images, but there is a related
standard called MPEG for motion pictures.
JPEG is "lossy," meaning that the decompressed image isn't quite the same as
the one you started with. (There are lossless image compression algorithms,
but JPEG achieves much greater compression than is possible with lossless
methods.) JPEG is designed to exploit known limitations of the human eye,
notably the fact that small color changes are perceived less accurately than
small changes in brightness. Thus, JPEG is intended for compressing images
that will be looked at by humans. If you plan to machine-analyze your
images, the small errors introduced by JPEG may be a problem for you, even
if they are invisible to the eye.
A useful property of JPEG is that the degree of lossiness can be varied by
adjusting compression parameters. This means that the image maker can trade
off file size against output image quality. You can make *extremely* small
files if you don't mind poor quality; this is useful for applications such
as indexing image archives. Conversely, if you aren't happy with the output
quality at the default compression setting, you can jack up the quality
until you are satisfied, and accept lesser compression.
Another important aspect of JPEG is that decoders can trade off decoding
speed against image quality, by using fast but inaccurate approximations to
the required calculations. Some viewers obtain remarkable speedups in this
Subject:  Why use JPEG?
There are two good reasons: to make your image files smaller, and to store
24-bit-per-pixel color data instead of 8-bit-per-pixel data.
Making image files smaller is a win for transmitting files across networks
and for archiving libraries of images. Being able to compress a 2 Mbyte
full-color file down to, say, 100 Kbytes makes a big difference in disk
space and transmission time! And JPEG can easily provide 20:1 compression
of full-color data. If you are comparing GIF and JPEG, the size ratio is
usually more like 4:1 (see " How well does JPEG compress images?").
If your viewing software doesn't support JPEG directly, you'll have to
convert JPEG to some other format to view the image. Even with a
JPEG-capable viewer, it takes longer to decode and view a JPEG image than
to view an image of a simpler format such as GIF. Thus, using JPEG is
essentially a time/space tradeoff: you give up some time in order to store
or transmit an image more cheaply. But it's worth noting that when network
or telephone transmission is involved, the time savings from transferring a
shorter file can be greater than the time needed to decompress the file.
The second fundamental advantage of JPEG is that it stores full color
information: 24 bits/pixel (16 million colors). GIF, the other image format
widely used on the net, can only store 8 bits/pixel (256 or fewer colors).
GIF is reasonably well matched to inexpensive computer displays --- most
run-of-the-mill PCs can't display more than 256 distinct colors at once.
But full-color hardware is getting cheaper all the time, and JPEG images
look *much* better than GIFs on such hardware. Within a couple of years,
GIF will probably seem as obsolete as black-and-white MacPaint format does
today. Furthermore, JPEG is far more useful than GIF for exchanging images
among people with widely varying display hardware, because it avoids
prejudging how many colors to use (see " What is color quantization?").
Hence JPEG is considerably more appropriate than GIF for use as a Usenet
and World Wide Web standard format.
A lot of people are scared off by the term "lossy compression". But when
it comes to representing real-world scenes, *no* digital image format can
retain all the information that impinges on your eyeball. By comparison
with the real-world scene, JPEG loses far less information than GIF.
The real disadvantage of lossy compression is that if you repeatedly
compress and decompress an image, you lose a little quality each time
(see " Does loss accumulate with repeated compression/decompression?").
This is a serious objection for some applications but matters not at all
for many others.
Subject:  When should I use JPEG, and when should I stick with GIF?
JPEG is *not* going to displace GIF entirely; for some types of images,
GIF is superior in image quality, file size, or both. One of the first
things to learn about JPEG is which kinds of images to apply it to.
Generally speaking, JPEG is superior to GIF for storing full-color or
gray-scale images of "realistic" scenes; that means scanned photographs and
similar material. Any continuous variation in color, such as occurs in
highlighted or shaded areas, will be represented more faithfully and in less
space by JPEG than by GIF.
GIF does significantly better on images with only a few distinct colors,
such as line drawings and simple cartoons. Not only is GIF lossless for
such images, but it often compresses them more than JPEG can. For example,
large areas of pixels that are all *exactly* the same color are compressed
very efficiently indeed by GIF. JPEG can't squeeze such data as much as GIF
does without introducing visible defects. (One implication of this is that
large single-color borders are quite cheap in GIF files, while they are best
avoided in JPEG files.)
Computer-drawn images, such as ray-traced scenes, usually fall between
photographs and cartoons in terms of complexity. The more complex and
subtly rendered the image, the more likely that JPEG will do well on it.
The same goes for semi-realistic artwork (fantasy drawings and such).
But icons that use only a few colors are handled better by GIF.
JPEG has a hard time with very sharp edges: a row of pure-black pixels
adjacent to a row of pure-white pixels, for example. Sharp edges tend to
come out blurred unless you use a very high quality setting. Edges this
sharp are rare in scanned photographs, but are fairly common in GIF files:
consider borders, overlaid text, etc. The blurriness is particularly
objectionable with text that's only a few pixels high. If you have a GIF
with a lot of small-size overlaid text, don't JPEG it. (If you want to
attach descriptive text to a JPEG image, put it in as a comment rather than
trying to overlay it on the image. Most recent JPEG software can deal with
textual comments in a JPEG file, although older viewers may just ignore the
Plain black-and-white (two level) images should never be converted to JPEG;
they violate all of the conditions given above. You need at least about
16 gray levels before JPEG is useful for gray-scale images. It should also
be noted that GIF is lossless for gray-scale images of up to 256 levels,
while JPEG is not.
If you have a large library of GIF images, you may want to save space by
converting the GIFs to JPEG. This is trickier than it may seem --- even
when the GIFs contain photographic images, they are actually very poor
source material for JPEG, because the images have been color-reduced.
Non-photographic images should generally be left in GIF form. Good-quality
photographic GIFs can often be converted with no visible quality loss, but
only if you know what you are doing and you take the time to work on each
image individually. Otherwise you're likely to lose a lot of image quality
or waste a lot of disk space ... quite possibly both. Read sections 8 and 9
if you want to convert GIFs to JPEG.
Subject:  How well ...
read more »