0

GTKmmとexiv2を使用してEXIFメタデータフォームの写真を読み取っています。ただし、Exiv2関数はstd :: stringファイルパスのみを受け入れます...ASCIIファイルパスではなく試してみると、プログラムがクラッシュします。

そのデータを読み取る方法はありますか?Exiv2がGlib::ustrings..を受け入れたら素晴らしいと思います。

WindowsとLinuxのソリューションに興味があります。

4

2 に答える 2

0

これがWindowsの場合は、を使用できますGetShortPathName

于 2011-11-02T17:11:11.267 に答える
0

わかりました、解決策があります!

関数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;

}
于 2011-11-04T15:13:21.970 に答える