Exiv2:如何读取照片与UTF8文件路径



我使用GTKmm和exiv2来读取EXIF元数据形式的照片。但是Exiv2函数只接受std::字符串文件路径…当我在非ASCII文件路径上尝试时,它会使程序崩溃。

有办法读取数据吗?如果Exiv2能接受Glib::ustrings就太好了…

我对Windows和Linux的解决方案很感兴趣。

好了,我有办法了!

您只需要使用函数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;
}

如果在Windows中,则可以使用GetShortPathName

相关内容

  • 没有找到相关文章

最新更新