forwarded 460718 http://sourceforge.net/tracker/index.php?func=detail&aid=1870009&group_id=183831&atid=906820 thanks
Why so long URLs? Sigh… Giuseppe, you can drop control@ from your replies, it is only there so that the above is taken into account in the bug tracking system. On 14/01/2008, Julien Valroff wrote: > Hi, Hi again, Julien. :) > qtpfsgui cannot retrieve exposure information when the path contains UTF-8 > special chars. > As an example, if I store my JPEG pictures in "/home/julien/Images > numériques", qtpfsgui cannot use the EXIF data of the pictures. > > If I rename the folder to "/home/julien/Images numeriques" (ie. > without the accent), it works OK. Similar bugreports exist on sourceforge's tracker: - http://sourceforge.net/tracker/index.php?func=detail&aid=1870009&group_id=183831&atid=906820 - http://sourceforge.net/tracker/index.php?func=detail&aid=1870019&group_id=183831&atid=906820 (duplicate) Here is a possible workaround (as in “works for me”), but that might not be how Giuseppe wants to do things. Furthermore, they are many occurrences to adapt, so I'm not comfortable with doing so myself and shipping such a modified version (I don't want to introduce crashes when trying to limit them). Patch attached. Cheers, -- Cyril Brulebois
diff -ur qtpfsgui-1.9.0/src/Exif/exif_operations.cpp qtpfsgui.kibi/src/Exif/exif_operations.cpp --- qtpfsgui-1.9.0/src/Exif/exif_operations.cpp 2007-08-26 16:52:24.000000000 +0000 +++ qtpfsgui.kibi/src/Exif/exif_operations.cpp 2008-01-16 00:34:25.000000000 +0000 @@ -23,6 +23,7 @@ #include <image.hpp> #include <cmath> +#include <QFileInfo> #include "exif_operations.h" void ExifOperations::writeExifData(const std::string& filename, const std::string& comment) { @@ -79,9 +80,9 @@ destimage->writeMetadata(); } -float ExifOperations::obtain_expotime(const std::string& filename) { +float ExifOperations::obtain_expotime(const QString& filename) { try { - Exiv2::Image::AutoPtr image = Exiv2::ImageFactory::open(filename); + Exiv2::Image::AutoPtr image = Exiv2::ImageFactory::open((const char*) (QFile::encodeName(filename))); image->readMetadata(); Exiv2::ExifData &exifData = image->exifData(); if (exifData.empty()) Seulement dans qtpfsgui.kibi/src/Exif: exif_operations.cpp.orig diff -ur qtpfsgui-1.9.0/src/Exif/exif_operations.h qtpfsgui.kibi/src/Exif/exif_operations.h --- qtpfsgui-1.9.0/src/Exif/exif_operations.h 2007-08-26 16:52:24.000000000 +0000 +++ qtpfsgui.kibi/src/Exif/exif_operations.h 2008-01-16 00:34:25.000000000 +0000 @@ -30,7 +30,7 @@ public: static void writeExifData(const std::string& filename, const std::string& comment); static void copyExifData(const std::string& from, const std::string& to, bool dont_overwrite); - static float obtain_expotime(const std::string& filename); + static float obtain_expotime(const QString& filename); private: }; diff -ur qtpfsgui-1.9.0/src/Threads/hdrInputLoader.cpp qtpfsgui.kibi/src/Threads/hdrInputLoader.cpp --- qtpfsgui-1.9.0/src/Threads/hdrInputLoader.cpp 2007-11-25 16:45:57.000000000 +0000 +++ qtpfsgui.kibi/src/Threads/hdrInputLoader.cpp 2008-01-16 00:34:25.000000000 +0000 @@ -40,7 +40,7 @@ QFileInfo qfi(fname); //get exposure time, -1 is error - float expotime=ExifOperations::obtain_expotime(qfi.filePath().toStdString()); + float expotime=ExifOperations::obtain_expotime(qfi.filePath()); QString extension=qfi.suffix().toUpper(); //get filename extension //now go and fill the list of image data (real payload)
pgp1N18JVIEHi.pgp
Description: PGP signature