File format specs?

I'm the developer of a free software photo downloader. For all RAW formats, I want to know how much of a RAW file should be read into memory to:

  1. using a tool like exiv2, read the exif values
  2. extract the exif thumbnail or smallest preview image such that it is at least 160px on the longest edge

This is helpful for two reasons. First, to know how much of a RAW to extract from a camera using libgphoto2 over USB. That way metadata like thumbnail orientation can be determined, because libgphoto2 does not expose that. Second, to know in advance how much of a RAW needs to be read from disk so that a thumbnail can be generated. My assumption is that the exif and thumbnail data is stored in a predictable location for each format, and that while the size of the data will naturally vary depending on the content of the image and the camera model, it will not vary that much.

Has someone generated this kind of information and made it public? If not, is it possible to generate it with libraw?

Damon Lynch


LibRaw assumes *full* raw

LibRaw assumes *full* raw file is available. If not, the file may be rejected.

In some cases only some part of file is sufficient for metadata parse, but there is no general rule: it is possible that RAW data is recorded before some other metadata (this is the case for Canon CRW files, for example.

You may implement own I/O layer which will ask downloader to download requested file part(s)

-- Alex Tutubalin