Bug #1344

Unknown metadata

Added by luv zeng over 3 years ago. Updated over 3 years ago.

Target version:
Start date:
18 Apr 2018
Due date:
% Done:


Estimated time:
1.00 h


Hey guys,

I'm trying to use exiv2 to see some non standard metadata. We have our own specific data that is unlike that of traditional camera makers.
I can see it with exiftool, but exiv2 fails at displaying it. I have tried the command :
exiv2 pr -u my image.tiff
It only displays standard data (Image Size, exposure time, aperture...) but not the rest.
Any idea what I should do ?



Updated by Robin Mills over 3 years ago

Please attach a sample image so I can investigate your file. I'll use the commands $ exiv2 -pS yourImageFile and $ exiv2 -pR yourImageFile to look into your file.

Exiv2 supports Exif, IPTC, XMP and ICC metadata embedded in many image formats including JPG, PNG, Tiff and numerous others. Without knowing more about your format, I can't say anything about the effort involved to support your format. That exiftool supports your format is encouraging. Exiv2 is open-source and you are welcome to write the necessary code and submit it for review and integration with Exiv2. If you are asking us to write the code, the marketing people would ask the question "What is the business case for supporting your format?". We have a back-log of formats waiting for Engineering resources.

I am hosting a meeting of Team Exiv2 at my home in England on May 5 & 6. Additional image formats are on the agenda for discussion.


Updated by luv zeng over 3 years ago

Great exiv2 -pR works.

Sorry I can't share the data as it belongs to my company.

Another question, when I am trying to code the same thing, I also don't see the "new" metadata. Let's say I have a tag called "ISOSpeedRatings" for example, how could I display it in my code ? I tried the example supplied on the website but it doesn't display it :

Exiv2::Image::AutoPtr image1 = Exiv2::ImageFactory::open(filename1);
assert(image1.get() != 0);
Exiv2::ExifData &exifData = image1->exifData();
if (exifData.empty()) {
std::string error(filename1);
error += ": No Exif data found in the file";
throw Exiv2::Error(1, error);
Exiv2::ExifData::const_iterator end = exifData.end();
for (Exiv2::ExifData::const_iterator i = exifData.begin(); i != end; ++i) {
const char* tn = i->typeName();
<< std::dec << i->value()
<< "\n";

Updated by Robin Mills over 3 years ago

  • Category set to not-a-bug
  • Status changed from New to Assigned
  • Assignee set to Robin Mills
  • Target version set to 0.27
  • % Done changed from 0 to 50
  • Estimated time set to 2.00 h

I'm going to mark this as "not a bug", as I see no case to answer.

The exiv2 command-line program has quite extensive argument processing and is our test harness.

I recommend you look at the programs in samples/*.cpp which illustrate APIs to carry out common operations. You'll find the code in samples/exifvalue.cpp does what you've asked:

$ bin/exiv2 -pa --grep rating/i
Exif.Photo.ISOSpeedRatings                   Short       1  200
Xmp.xmp.Rating                               XmpText     1  0
$ bin/exifvalue Exif.Photo.ISOSpeedRatings
$ bin/exifvalue Exif.Photo.ISOSpeedRatings123
Caught Exiv2 exception 'Invalid tag name or ifdId `ISOSpeedRatings123', ifdId 5'


Updated by Robin Mills over 3 years ago

  • Status changed from Assigned to Closed
  • % Done changed from 50 to 100
  • Estimated time changed from 2.00 h to 1.00 h

No feedback from user. Case closed.

Also available in: Atom PDF