使用Exiv2庫將一些exif標籤寫入圖像我正在運行下面的代碼,類似於Exiv2 site上提供的示例。Exiv2 - 一些圖像標籤沒有寫,但有些是做的
但是,一些拋出錯誤和一些根本不寫但不拋出錯誤。我注意到Exif.Image。*中的標籤不工作,有些與Exif.Photo。*工作,有些則不工作,但無法找到模式。
我正在使用JHEAD檢查寫入文件的內容。
想知道是否有人在過去遇到過這種行爲或知道發生了什麼?謝謝。
Exiv2::ExifData exifData;
try {
// these work fine
exifData["Exif.Photo.FNumber"] = Exiv2::Rational(7, 5);
exifData["Exif.Photo.ExposureTime"] = Exiv2::Rational(1, 1);
exifData["Exif.Photo.WhiteBalance"] = uint16_t(1);
exifData["Exif.Photo.ShutterSpeedValue"] = Exiv2::Rational(1, 1);
exifData["Exif.Photo.DateTimeOriginal"] = "12:12:12";
// throw errors
exifData["Exif.Photo.ISOSpeed"] = int32_t(2);
// don't throw error, but don't write to jpg
exifData["Exif.Photo.GainControl"] = uint16_t(0);
exifData["Exif.Photo.Saturation"] = uint16_t(100);
exifData["Exif.Photo.Sharpness"] = uint16_t(2);
Exiv2::Image::AutoPtr image = Exiv2::ImageFactory::open("filepath");
assert(image.get() != 0);
image->setExifData(exifData);
image->writeMetadata();
}
catch (Exiv2::AnyError& e) {
cout << "Caught Exiv2 exception '" << e << "'\n";
}
感謝您的回覆。我會照辦的。只是爲了檢查,jpg和jpeg與exiv2有所不同嗎? 我用ImageMagick(Magick ++)創建圖像。 – barnabus 2012-07-30 16:34:05
好的 - 我注意到Jhead是罪魁禍首。如果我使用命令行工具__exif__它顯示數據。 – barnabus 2012-07-30 18:54:21