GTKmmとexiv2を使用してEXIFメタデータフォームの写真を読み取っています。ただし、Exiv2関数はstd :: stringファイルパスのみを受け入れます...ASCIIファイルパスではなく試してみると、プログラムがクラッシュします。
そのデータを読み取る方法はありますか?Exiv2がGlib::ustrings..を受け入れたら素晴らしいと思います。
WindowsとLinuxのソリューションに興味があります。
これがWindowsの場合は、を使用できますGetShortPathName
。
わかりました、解決策があります!
関数Glibmm::locale_from_utf8を使用して、UTF8文字列をstd(ascii)文字列に変換する必要があります。次に例を示します。
void get_exif_data(const Glib::ustring &image_src)
{
Exiv2::Image::AutoPtr image = Exiv2::ImageFactory::open(Glib::locale_from_utf8(image_src));
image->readMetadata();
Exiv2::ExifData &exifData = image->exifData();
Exiv2::ExifData::const_iterator it = exifData.begin();
for(it;it!=exifData.end();it++) cout << it->key() + ": " + it->getValue() << endl;
}