I am writing an application which read/write metadata for an image (it converts a raw file into a jpeg/tiff) and I need to write metadata about camera/mode/...into the generated jpeg.

I know that I can do this using exif and in windows I am using GDI to do this. But I am reading information about xmp and xmp sdk from adobe.

I am wondering which one should I use? exif or xmp?

How they are relates to each other?

Why one may select to write exif metadata and somebody else may select XMP? What is the pros/cons of selecting any of them.

I am writing in c++ on windows (visual studio 2012)

  • If you're writing anything using VS2012 then the best bet is to get your metadata via WIC. Then you don't have to futz about with any of that stuff and can access a wide range of filetypes without having to deal directly with any decoding (including Raw files if the appropriate codec pack is installed). Jan 27, 2014 at 20:05

2 Answers 2


If you are storing standard metadata fields such as camera information, it would probably be easiest to stick to the well defined field names and types of EXIF. It may mean better compatibility with other applications that may not have as good support for XMP.

Your other option is to simply use both as they can co-exist in the same file.

  • 1
    +1 to using both. ("The nice thing about standards ...")
    – mattdm
    Feb 25, 2014 at 13:56

They are different formats. XMP is an XML based format that is more self-descriptive where as EXIF requires knowing the format of the file to know what value is at each offset. EXIF is more limited in what it can store (atleast that can be universally recognized) but also is smaller since it doesn't need descriptors of the fields to be included in the file. XMP on the other hand takes more space, but can define any values you want since it includes field descriptors in the format.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.