Commit a1504e8e authored by Eirik Aavitsland's avatar Eirik Aavitsland
Browse files

WebP: Fix wrong default quality level for writing


If a negative (i.e. illegal/unset) quality value was set to the WebP
handler, it would just bound it to 0 (minimum quality level). This
would happen on every save where no explicit quality level had been
requested on the QImageWriter.
Fix by copying the jpeg handler's behavior: If a negative value is
set, use the default level (75) when storing.

[ChangeLog][WebP handler] Fixed default quality level for writing

Task-number: QTBUG-64437
Change-Id: I0f1cabba6cea6851c6a813bf5bf7ab8e8c49ddfb
Reviewed-by: default avatarAndy Shaw <andy.shaw@qt.io>
parent feca51d8
No related merge requests found
Showing with 3 additions and 6 deletions
......@@ -48,7 +48,6 @@
static const int riffHeaderSize = 12; // RIFF_HEADER_SIZE from webp/format_constants.h
QWebpHandler::QWebpHandler() :
m_lossless(false),
m_quality(75),
m_scanState(ScanNotScanned),
m_features(),
......@@ -250,8 +249,8 @@ bool QWebpHandler::write(const QImage &image)
return false;
}
config.lossless = m_lossless;
config.quality = m_quality;
config.quality = m_quality < 0 ? 75 : qMin(m_quality, 100);
config.lossless = (config.quality >= 100);
picture.writer = pictureWriter;
picture.custom_ptr = device();
......@@ -289,8 +288,7 @@ void QWebpHandler::setOption(ImageOption option, const QVariant &value)
{
switch (option) {
case Quality:
m_quality = qBound(0, value.toInt(), 100);
m_lossless = (m_quality >= 100);
m_quality = value.toInt();
return;
default:
break;
......
......@@ -85,7 +85,6 @@ private:
ScanSuccess = 1,
};
bool m_lossless;
int m_quality;
mutable ScanState m_scanState;
WebPBitstreamFeatures m_features;
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment