To give a bit more
detail on the format: the image to be encoded is divided into 8x8 pixel chunks. Assuming the image is colour, it is converted from
RGB colour space to
YUV colour space. Each of the three colour components Y, U and V then has a 2D
discrete cosine transform applied to it. Since it's an 8x8 block, this
DCT has 64
coefficients, but the nice thing is that many of them are close to zero. So, depending on the
quality setting, you throw away the coefficients that are closest to zero ... the higher the quality setting, the less coefficients you throw away. You then compress the remaining coefficients using
Huffman compression and that's it; you have a
JPEG file.
This is also the source of artefacts in uncompressed JPEG images. If you look at a JPEG image closely, especially a poor quality one, you can sometimes see the edges of the 8x8 blocks, where the DCT on one side doesn't match the DCT on the other.