我正在使用Exiv2来拍摄照片的元数据。我想使用这些元数据的一些值。但我不知道如何将exiv2值转换为int。这是我的souse cord。
int metadetascanner(const char* img)
{
try
{
Exiv2::Image::AutoPtr image = Exiv2::ImageFactory::open(img);
image->readMetadata();
Exiv2::ExifData &exif = image->exifData();
Exiv2::Exifdatum &rotation = exif["Exif.Image.Orientation"];
if (exif.empty())
{
cerr << "no exif" << endl;
return -1;
}
int a = rotation.value();
return a;
}
catch (Exiv2::Error& e)
{
cout << e.what() << endl;
return -1;
}
}
我只是写“int a = rotation.value();”但我知道它不可能是这样的。
如果你帮助我,我将非常感谢你。
答案 0 :(得分:0)
从Exiv2 documentation开始,orientation标签已经很短了,所以你的“int a = rotation.value();”想法是有效的。
编辑: 来自API documentation of ExifDatum
int a = rotation.toLong();
返回值意味着您阅读here。
如果有任何问题,请评论。我多年没有使用Exiv2了。