메타데이터를 읽고 쓰기 위해 Exiv2를 (천신만고 끝에) 빌드하였다.
다음은 사용 예제이다.
#include <exiv2/exiv2.hpp>
#pragma comment(lib, "exiv2s.lib")
#pragma comment(lib, "xmpsdk.lib")
#pragma comment(lib, "zlib1.lib")
#pragma comment(lib, "libexpat.lib")
int _tmain(int argc, _TCHAR* argv[])
{
Exiv2::Image::AutoPtr image = Exiv2::ImageFactory::open("196_9685.jpg"); //("untitled.png");
image->readMetadata();
Exiv2::ExifData &exifData = image->exifData();
Exiv2::ExifData::const_iterator end = exifData.end();
for (Exiv2::ExifData::const_iterator i = exifData.begin(); i != end; ++i) {
const char* tn = i->typeName();
std::cout << std::setw(44) << std::setfill(' ') << std::left
<< i->key() << " "
<< "0x" << std::setw(4) << std::setfill('0') << std::right
<< std::hex << i->tag() << " "
<< std::setw(9) << std::setfill(' ') << std::left
<< (tn ? tn : "Unknown") << " "
<< std::dec << std::setw(3)
<< std::setfill(' ') << std::right
<< i->count() << " "
<< std::dec << i->value()
<< "\n";
}
getchar();
return 0;
}
실행하면 다음 그림과 같이 사진의 메타데이터를 죽 읽어준다.