|
Section - [22] How can my program extract
image dimensions from a JPEGfile?
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.tardis.ed.ac.uk/~ark/wwwis/. |
|