Commit 6209d68ebc31383ac1a9a9369b171429729b20f3

Authored by Scott Klum
2 parents ba2215cb 4261f500

Merge pull request #347 from biometrics/io_tweaks

Io tweaks
openbr/plugins/gallery/binary.cpp
... ... @@ -16,6 +16,7 @@
16 16  
17 17 #include <QJsonObject>
18 18 #include <QJsonParseError>
  19 +#include <QUrl>
19 20  
20 21 #ifdef _WIN32
21 22 #include <io.h>
... ... @@ -272,7 +273,8 @@ class utGallery : public BinaryGallery
272 273 t.append(cv::Mat(1, dataSize, CV_8UC1, dataStart).clone() /* We don't want a shallow copy! */);
273 274 } else {
274 275 if (!gallery.atEnd())
275   - qFatal("Failed to read universal template header!");
  276 + qWarning("Failed to read universal template header!");
  277 + gallery.close();
276 278 }
277 279 return t;
278 280 }
... ... @@ -284,7 +286,10 @@ class utGallery : public BinaryGallery
284 286 qFatal("Expected 16-byte ImageID, got: %d bytes.", imageID.size());
285 287  
286 288 const int32_t algorithmID = (t.isEmpty() || t.file.fte) ? 0 : t.file.get<int32_t>("AlgorithmID");
287   - const QByteArray url = t.file.get<QString>("URL", t.file.name).toLatin1();
  289 +
  290 + // QUrl::fromUserInput provides some nice functionality in terms of completing URLs
  291 + // e.g. C:/test.jpg -> file://C:/test.jpg and google.com/image.jpg -> http://google.com/image.jpg
  292 + const QByteArray url = QUrl::fromUserInput(t.file.get<QString>("URL", t.file.name)).toEncoded();
288 293  
289 294 int32_t x = 0, y = 0;
290 295 uint32_t width = 0, height = 0;
... ...
openbr/plugins/io/download.cpp
... ... @@ -57,7 +57,12 @@ private:
57 57 if (!url.contains("://"))
58 58 url = "file://" + url;
59 59 dst.file.set("URL", url);
60   - if (url.startsWith("file://"))
  60 +
  61 + static const QRegularExpression regExp("file:///[A-Z]:/");
  62 +
  63 + if (url.contains(regExp))
  64 + url = url.mid(8);
  65 + else if (url.startsWith("file://"))
61 66 url = url.mid(7);
62 67  
63 68 QIODevice *device = NULL;
... ...