c++jpegopenvms

Get dimensions of JPEG in C++


I need to get the image dimensions of a JPEG in C++. I'm looking for either a fairly simple way to do it or a smallish library that provides that functionality. I'm working in C++ on OpenVMS, so any external libraries may have to be adapted to compile on our systems - so please don't post me links to big, closed source libraries!

Has anyone come across anything that might do the trick, or understand the JPEG file format (I think I probably mean the JFIF file format here) to tell me how I might go about rolling my own solution?


Solution

  • You have this C function which may extract the relevant data for you.

    This is a C routine but should compile fine with C++.
    Pass it a normal FILE pointer (from fopen) to the beginning of a jpeg file and two int pointers to be set with the image height and width.

    Or you may find in the Boost library a jpeg class which has the right function (From Adobe Generic Image Library).

    jpeg_read_dimensions

    boost::gil::jpeg_read_dimensions (const char *filename)
    

    Returns the width and height of the JPEG file at the specified location. Throws std::ios_base::failure if the location does not correspond to a valid JPEG file.