2016-11-16 10 views
0

Я использую Exiv2 для получения метаданных фотографии. Я хотел бы использовать некоторую ценность этих метаданных. но я понятия не имею, как преобразовать значение exiv2 в int. вот мой шнур.Как преобразовать const 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; 
    } 
} 

Я просто пишу «ИНТ а = 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

большое спасибо. –