From 6b43e45753e5cf54192f7d0dadf7b0426b4bf78f Mon Sep 17 00:00:00 2001 From: Ivailo Monev Date: Sat, 7 May 2022 23:16:01 +0300 Subject: [PATCH] kioslave: discard thumbnail from Exiv2 metadata if it is smaller than the requested size Signed-off-by: Ivailo Monev --- kioslave/thumbnail/imagecreator.cpp | 8 +++++++- kioslave/thumbnail/imagecreator.h | 2 +- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/kioslave/thumbnail/imagecreator.cpp b/kioslave/thumbnail/imagecreator.cpp index 3bdfac23..4b661090 100644 --- a/kioslave/thumbnail/imagecreator.cpp +++ b/kioslave/thumbnail/imagecreator.cpp @@ -35,12 +35,18 @@ extern "C" } } -bool ImageCreator::create(const QString &path, int, int, QImage &img) +bool ImageCreator::create(const QString &path, int width, int height, QImage &img) { // use preview from Exiv2 metadata if possible KExiv2 exiv(path); img = exiv.preview(); + // if the thumbnail from Exiv2 metadata is smaller than the request discard it, the preview in + // file properties dialog for example often requests large thumbnails + if (!img.isNull() && (img.width() < width || img.height() < height)) { + img = QImage(); + } + // create image preview otherwise if (img.isNull() && !img.load(path)) { return false; diff --git a/kioslave/thumbnail/imagecreator.h b/kioslave/thumbnail/imagecreator.h index 23d0b27f..c41d971f 100644 --- a/kioslave/thumbnail/imagecreator.h +++ b/kioslave/thumbnail/imagecreator.h @@ -26,7 +26,7 @@ class ImageCreator : public ThumbCreator { public: ImageCreator() {} - virtual bool create(const QString &path, int, int, QImage &img); + virtual bool create(const QString &path, int width, int height, QImage &img); virtual Flags flags() const; virtual QWidget *createConfigurationWidget(); virtual void writeConfiguration(const QWidget *configurationWidget); -- 2.11.0