From efe57da45e3367d805eb44560034e51cec8c8694 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lumi=C3=A8re=20=C3=89lev=C3=A9?= <88174309+PoneyClairDeLune@users.noreply.github.com> Date: Fri, 19 Jul 2024 06:09:41 +0000 Subject: [PATCH 1/5] Reserved for WebP quality sliders. --- flameshot.example.ini | 3 +++ src/config/generalconf.cpp | 26 ++++++++++++++++++++++++++ src/config/generalconf.h | 3 +++ 3 files changed, 32 insertions(+) diff --git a/flameshot.example.ini b/flameshot.example.ini index 2717479d51..adb35c4655 100644 --- a/flameshot.example.ini +++ b/flameshot.example.ini @@ -93,6 +93,9 @@ ;; Set JPEG Quality (int in range 0-100) ; jpegQuality=75 ; +;; Set WebP Quality (int in range 0-100) +; webpQuality=95 +; ;; Shortcut Settings for all tools ;[Shortcuts] ;TYPE_ARROW=A diff --git a/src/config/generalconf.cpp b/src/config/generalconf.cpp index 8c8024def7..99aeb9e3cb 100644 --- a/src/config/generalconf.cpp +++ b/src/config/generalconf.cpp @@ -65,6 +65,7 @@ GeneralConf::GeneralConf(QWidget* parent) initShowMagnifier(); initSquareMagnifier(); initJpegQuality(); + initWebPQuality(); // this has to be at the end initConfigButtons(); updateComponents(); @@ -799,6 +800,26 @@ void GeneralConf::initJpegQuality() &GeneralConf::setJpegQuality); } +void GeneralConf::initWebPQuality() +{ + auto* tobox = new QHBoxLayout(); + + int quality = ConfigHandler().value("webpQuality").toInt(); + m_webpQuality = new QSpinBox(); + m_webpQuality->setRange(0, 100); + m_webpQuality->setToolTip(tr("Quality range of 0-100; Higher number is " + "better quality and larger file size")); + m_webpQuality->setValue(quality); + tobox->addWidget(m_webpQuality); + tobox->addWidget(new QLabel(tr("WebP Quality"))); + + m_scrollAreaLayout->addLayout(tobox); + connect(m_webpQuality, + static_cast(&QSpinBox::valueChanged), + this, + &GeneralConf::setWebPQuality); +} + void GeneralConf::setSelGeoHideTime(int v) { ConfigHandler().setValue("showSelectionGeometryHideTime", v); @@ -809,6 +830,11 @@ void GeneralConf::setJpegQuality(int v) ConfigHandler().setJpegQuality(v); } +void GeneralConf::setWebPQuality(int v) +{ + ConfigHandler().setWebPQuality(v); +} + void GeneralConf::setGeometryLocation(int index) { ConfigHandler().setValue("showSelectionGeometry", diff --git a/src/config/generalconf.h b/src/config/generalconf.h index e1f4979163..77cd156f93 100644 --- a/src/config/generalconf.h +++ b/src/config/generalconf.h @@ -58,6 +58,7 @@ private slots: void setGeometryLocation(int index); void setSelGeoHideTime(int v); void setJpegQuality(int v); + void setWebPQuality(int v); private: const QString chooseFolder(const QString& currentPath = ""); @@ -92,6 +93,7 @@ private slots: void initSaveLastRegion(); void initShowSelectionGeometry(); void initJpegQuality(); + void initWebPQuality(); void _updateComponents(bool allowEmptySavePath); @@ -136,4 +138,5 @@ private slots: QComboBox* m_selectGeometryLocation; QSpinBox* m_xywhTimeout; QSpinBox* m_jpegQuality; + QSpinBox* m_webpQuality; }; From 0eba5c4e74bacd1dd3e15e61a485fbb7b944f69e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lumi=C3=A8re=20=C3=89lev=C3=A9?= <88174309+PoneyClairDeLune@users.noreply.github.com> Date: Fri, 19 Jul 2024 06:12:34 +0000 Subject: [PATCH 2/5] Added handles for WebP quality sliders. --- src/utils/confighandler.cpp | 3 ++- src/utils/confighandler.h | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/utils/confighandler.cpp b/src/utils/confighandler.cpp index 485fb26575..331607202e 100644 --- a/src/utils/confighandler.cpp +++ b/src/utils/confighandler.cpp @@ -126,7 +126,8 @@ static QMap> OPTION("uploadClientSecret" ,String ( "313baf0c7b4d3ff" )), OPTION("showSelectionGeometry" , BoundedInt (0,5,4)), OPTION("showSelectionGeometryHideTime", LowerBoundedInt (0, 3000)), - OPTION("jpegQuality", BoundedInt (0,100,75)) + OPTION("jpegQuality", BoundedInt (0,100,75)), + OPTION("webpQuality", BoundedInt (0,100,95)) }; static QMap> recognizedShortcuts = { diff --git a/src/utils/confighandler.h b/src/utils/confighandler.h index f2eb4ad940..b75455d172 100644 --- a/src/utils/confighandler.h +++ b/src/utils/confighandler.h @@ -128,6 +128,7 @@ class ConfigHandler : public QObject CONFIG_GETTER_SETTER(saveLastRegion, setSaveLastRegion, bool) CONFIG_GETTER_SETTER(showSelectionGeometry, setShowSelectionGeometry, int) CONFIG_GETTER_SETTER(jpegQuality, setJpegQuality, int) + CONFIG_GETTER_SETTER(webpQuality, setWebPQuality, int) CONFIG_GETTER_SETTER(showSelectionGeometryHideTime, showSelectionGeometryHideTime, int) From ba34169c2a689b2771c6a21d96a942ff9deb6bac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lumi=C3=A8re=20=C3=89lev=C3=A9?= <88174309+PoneyClairDeLune@users.noreply.github.com> Date: Fri, 19 Jul 2024 06:17:21 +0000 Subject: [PATCH 3/5] I have no idea if this works on the first try. --- src/utils/screenshotsaver.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/utils/screenshotsaver.cpp b/src/utils/screenshotsaver.cpp index f7f5a7102b..8a55f57839 100644 --- a/src/utils/screenshotsaver.cpp +++ b/src/utils/screenshotsaver.cpp @@ -41,6 +41,8 @@ bool saveToFilesystem(const QPixmap& capture, saveExtension = QFileInfo(completePath).suffix().toLower(); if (saveExtension == "jpg" || saveExtension == "jpeg") { okay = capture.save(&file, nullptr, ConfigHandler().jpegQuality()); + } else if (saveExtension == "webp") { + okay = capture.save(&file, nullptr, ConfigHandler().webpQuality()); } else { okay = capture.save(&file); } @@ -108,6 +110,8 @@ void saveToClipboardMime(const QPixmap& capture, const QString& imageType) QImageWriter imageWriter{ &buffer, imageType.toUpper().toUtf8() }; if (imageType == "jpeg") { imageWriter.setQuality(ConfigHandler().jpegQuality()); + } else if (imageType == "webp") { + imageWriter.setQuality(ConfigHandler().webpQuality()); } imageWriter.write(capture.toImage()); @@ -206,6 +210,8 @@ bool saveToFilesystemGUI(const QPixmap& capture) saveExtension = QFileInfo(savePath).suffix().toLower(); if (saveExtension == "jpg" || saveExtension == "jpeg") { okay = capture.save(&file, nullptr, ConfigHandler().jpegQuality()); + } else if (saveExtension == "webp") { + okay = capture.save(&file, nullptr, ConfigHandler().webpQuality()); } else { okay = capture.save(&file); } From 70d45d808f2f75da70b03abbb156dd12fc467436 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lumi=C3=A8re=20=C3=89lev=C3=A9?= <88174309+PoneyClairDeLune@users.noreply.github.com> Date: Fri, 19 Jul 2024 06:32:25 +0000 Subject: [PATCH 4/5] Test if optimized write affects WebP quality. --- src/utils/screenshotsaver.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/utils/screenshotsaver.cpp b/src/utils/screenshotsaver.cpp index 8a55f57839..7218ce6217 100644 --- a/src/utils/screenshotsaver.cpp +++ b/src/utils/screenshotsaver.cpp @@ -112,6 +112,7 @@ void saveToClipboardMime(const QPixmap& capture, const QString& imageType) imageWriter.setQuality(ConfigHandler().jpegQuality()); } else if (imageType == "webp") { imageWriter.setQuality(ConfigHandler().webpQuality()); + imageWriter.setOptimizedWrite(true); } imageWriter.write(capture.toImage()); From a445b4a0377a966de5e68558c1ef9a7b423726d3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lumi=C3=A8re=20=C3=89lev=C3=A9?= <88174309+PoneyClairDeLune@users.noreply.github.com> Date: Fri, 19 Jul 2024 06:38:27 +0000 Subject: [PATCH 5/5] Default WebP quality now sets to 90. --- flameshot.example.ini | 2 +- src/utils/confighandler.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/flameshot.example.ini b/flameshot.example.ini index adb35c4655..7c2e8c3c33 100644 --- a/flameshot.example.ini +++ b/flameshot.example.ini @@ -94,7 +94,7 @@ ; jpegQuality=75 ; ;; Set WebP Quality (int in range 0-100) -; webpQuality=95 +; webpQuality=90 ; ;; Shortcut Settings for all tools ;[Shortcuts] diff --git a/src/utils/confighandler.cpp b/src/utils/confighandler.cpp index 331607202e..29e410f7b0 100644 --- a/src/utils/confighandler.cpp +++ b/src/utils/confighandler.cpp @@ -127,7 +127,7 @@ static QMap> OPTION("showSelectionGeometry" , BoundedInt (0,5,4)), OPTION("showSelectionGeometryHideTime", LowerBoundedInt (0, 3000)), OPTION("jpegQuality", BoundedInt (0,100,75)), - OPTION("webpQuality", BoundedInt (0,100,95)) + OPTION("webpQuality", BoundedInt (0,100,90)) }; static QMap> recognizedShortcuts = {