2016-11-16 3 views
0

Exiv2를 사용하여 사진의 메타 데이터를 가져옵니다. 이 메타 데이터의 가치를 사용하고 싶습니다. 하지만 exiv2 값을 int로 변환하는 방법을 모르겠습니다. 여기 제 souse 코드입니다.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();" 아이디어가 유효합니다.

편집 :

int a = rotation.toLong(); 

당신이 here을 읽을 의미 반환 값 API documentation of ExifDatum에서.

잘못된 것이 있으면 의견을 말하십시오. Exiv2를 수년간 사용하지 않았습니다.

+0

답장을 보내 주셔서 감사합니다. 값은 메타 데이터 값을 제공 할 수 있음을 의미합니다. 내 프로그램의 경우 오리엔테이션 값을 얻고 싶습니다. 이것은 오류 코드입니다. "오류 : 초기화 할 때 'const Exiv2 :: Value'를 'int'로 변환 할 수 없습니다." –

+0

집에서 시도하고 평가판을 제공합니다. @yutamotomura –

+0

고마워요. –