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 回答