0

我正在使用 Exiv2 来获取照片的元数据。我想使用这些元数据的一些价值。但我不知道如何将 exiv2 值转换为 int。这是我的电源线。

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();”但我知道不可能是这样的。

如果您帮助我,我将非常感谢您。

4

1 回答 1

0

Exiv2 文档中,方向标签已经很短了,所以你的“int a = rotation.value();” 想法是有效的。

编辑:来自ExifDatum 的 API 文档

int a = rotation.toLong();

您在此处阅读的返回值含义。

如果有什么不对的地方请评论。我已经多年没有使用 Exiv2 了。

于 2016-11-16T07:41:41.977 回答