2016-11-16 81 views
0

我正在使用Exiv2獲取照片的元數據。我想使用這些元數據的一些價值。但我不知道如何將exiv2值轉換爲int。這是我的繩索。如何將const Exiv2 :: Value轉換爲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();」但我知道它不能這樣。

如果你能幫助我,我將非常感激你。

+0

我在下面編輯了我的答案。希望它有幫助。 –

回答

0

Exiv2 documentation開始,方向標記已經很短了,所以你的「int a = rotation.value();」想法是有效的。

編輯: 從API documentation of ExifDatum

int a = rotation.toLong(); 

返回值意味着你讀here

如果有什麼不對,請發表評論。多年來我一直沒有使用Exiv2。

+0

感謝您的回覆。價值意味着它可以爲我們提供元數據的價值。在我的計劃中,我想獲得一個方向值。這是錯誤線「錯誤:無法在初始化中將'const Exiv2 :: Value'轉換爲'int' –

+0

我會在家嘗試並給你我的試用版。 @yutamotomura –

+0

非常感謝你。 –