diff options
author | Daniel Savi <public@gaess.ch> | 2018-02-28 16:10:32 +0100 |
---|---|---|
committer | André Hartmann <aha_1980@gmx.de> | 2018-04-22 12:47:26 +0000 |
commit | 84eb9b5e30266e0b81ae5465f2449d371894258f (patch) | |
tree | 814c99e34dbf6b292d0f15ad267ce7d85f021a76 /src/gui/text/qtextodfwriter.cpp | |
parent | b3bbba7b871144c5d6f4b1a432f5c2cce02e321f (diff) |
Add image quality handling to QTextImageFormat
This patch enhances QTextImageFormat with a property for image quality.
Default will be quality of 100. The user may set different values with
setQuality(int). QTextODFexport will export images as png if quality is
set to 100 and as jpg with the compression quality set to the given value
if smaller than 100.
[ChangeLog][QtGui][QTextImageFormat] Adds two new functions to the class:
setQuality(int=100) and quality(). Is currently used by QTextODFWriter to
determine the image type and quality when exporting images to ODT files.
Change-Id: Iaa8ec0246aaba004d98c9e8c66609795101519a9
Reviewed-by: André Hartmann <aha_1980@gmx.de>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Diffstat (limited to 'src/gui/text/qtextodfwriter.cpp')
-rw-r--r-- | src/gui/text/qtextodfwriter.cpp | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/src/gui/text/qtextodfwriter.cpp b/src/gui/text/qtextodfwriter.cpp index ce65f9def1..d8218ab613 100644 --- a/src/gui/text/qtextodfwriter.cpp +++ b/src/gui/text/qtextodfwriter.cpp @@ -420,7 +420,6 @@ void QTextOdfWriter::writeInlineCharacter(QXmlStreamWriter &writer, const QTextF QTextImageFormat imageFormat = fragment.charFormat().toImageFormat(); writer.writeAttribute(drawNS, QString::fromLatin1("name"), imageFormat.name()); - // vvv Copy pasted mostly from Qt ================= QImage image; QString name = imageFormat.name(); if (name.startsWith(QLatin1String(":/"))) // auto-detect resources @@ -442,11 +441,19 @@ void QTextOdfWriter::writeInlineCharacter(QXmlStreamWriter &writer, const QTextF if (! image.isNull()) { QBuffer imageBytes; - QImageWriter imageWriter(&imageBytes, "png"); - imageWriter.write(image); QString filename = m_strategy->createUniqueImageName(); - m_strategy->addFile(filename, QString::fromLatin1("image/png"), imageBytes.data()); - + int imgQuality = imageFormat.quality(); + if (imgQuality >= 100 || imgQuality < 0 || image.hasAlphaChannel()) { + QImageWriter imageWriter(&imageBytes, "png"); + imageWriter.write(image); + m_strategy->addFile(filename, QString::fromLatin1("image/png"), imageBytes.data()); + } else { + // Write images without alpha channel as jpg with quality set by QTextImageFormat + QImageWriter imageWriter(&imageBytes, "jpg"); + imageWriter.setQuality(imgQuality); + imageWriter.write(image); + m_strategy->addFile(filename, QString::fromLatin1("image/jpg"), imageBytes.data()); + } // get the width/height from the format. qreal width = imageFormat.hasProperty(QTextFormat::ImageWidth) ? imageFormat.width() : image.width(); |