Bug #1344
Unknown metadata
100%
Description
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 ?
Thanks
History
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. http://dev.exiv2.org/news/3
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);
image1->readMetadata();
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::cout
<< 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 http://clanmills.com/Stonehenge.jpg Exif.Photo.ISOSpeedRatings Short 1 200 Xmp.xmp.Rating XmpText 1 0 $ bin/exifvalue http://clanmills.com/Stonehenge.jpg Exif.Photo.ISOSpeedRatings 200 $ bin/exifvalue http://clanmills.com/Stonehenge.jpg 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.