Exiv2: Как читать фото с UTF8 filepath? - PullRequest
0 голосов
/ 02 ноября 2011

Я использую GTKmm и exiv2 для чтения фотографий метаданных EXIF.Однако функции Exiv2 принимают только пути к файлам std :: string ... Когда я пытаюсь использовать не ASCII-путь к файлу, он разрушает программу.

Есть ли способ прочитать эти данные?Было бы здорово, если бы Exiv2 принял Glib :: ustrings ...

Я заинтересован в решениях для Windows и Linux.

Ответы [ 2 ]

0 голосов
/ 04 ноября 2011

Хорошо, у меня есть решение!

Вам просто нужно использовать функцию 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;

}
0 голосов
/ 02 ноября 2011

Если это в Windows, тогда вы можете использовать GetShortPathName.

Приветствия и hth.,

...