Parent document is top of "JPEG image compression FAQ, part 1/2"
Previous document is "[20] What if I need more than 8-bit precision?"
Next document is "[22] Where can I learn about using images on the World Wide Web?"

[21] How can my program extract image dimensions from a JPEG file?

The header of a JPEG file consists of a series of blocks, called "markers".
The image height and width are stored in a marker of type SOFn (Start Of
Frame, type N).  To find the SOFn you must skip over the preceding markers;
you don't have to know what's in the other types of markers, just use their
length words to skip over them.  The minimum logic needed is perhaps a page
of C code.  (Some people have recommended just searching for the byte pair
representing SOFn, without paying attention to the marker block structure.
This is unsafe because a prior marker might contain the SOFn pattern, either
by chance or because it contains a JPEG-compressed thumbnail image.  If you
don't follow the marker structure you will retrieve the thumbnail's size
instead of the main image size.)  A profusely commented example in C can be
found in rdjpgcom.c in the IJG distribution (see part 2, item 15).  Perl
code can be found in wwwis, from http://www.avs.com/~ark/wwwis/.

Parent document is top of "JPEG image compression FAQ, part 1/2"
Previous document is "[20] What if I need more than 8-bit precision?"
Next document is "[22] Where can I learn about using images on the World Wide Web?"