I once learnt that the Huffman Encoding is used to rid of redundant information, thus reducing file size. I am not sure how using a DCT, or FFT on an image can help in reducing file size. It does not work on redundancy, then how does it reduce the total amount of data?
If you take an image as is (especially a photograph, as opposed to line art, a document scan...), there's very little redundancy in it for Huffman encoding to do its work - because the image contains many small fluctuations and details which are not perceptible to the human eye but nevertheless present in the data. DCT followed by coefficient truncation/quantization eliminates the barely perceptible details and creates redundancy for Huffman compression to work on.
The reason it works is that for most images, most of the energy is in the low frequencies and can be captured by relatively few DCT coefficients. So what happens is the algorithms compute the DCT and only keep the high energy coefficients. The rest are simply thrown away. This results in some degradation in the image of course, but, assuming the algorithm did its job well, not much.