2
* Copyright (C) 2012-2013 Canonical, Ltd.
4
* This program is free software; you can redistribute it and/or modify
5
* it under the terms of the GNU General Public License as published by
6
* the Free Software Foundation; version 3.
8
* This program is distributed in the hope that it will be useful,
9
* but WITHOUT ANY WARRANTY; without even the implied warranty of
10
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11
* GNU General Public License for more details.
13
* You should have received a copy of the GNU General Public License
14
* along with this program. If not, see <http://www.gnu.org/licenses/>.
17
#include "imageresizer.h"
20
#include <QImageWriter>
23
ImageResizer::ImageResizer(QObject *parent) :
31
QString ImageResizer::file() const
36
QString ImageResizer::resizedFile() const
38
return (m_resizedImage) ? m_resizedImage->fileName() : "";
41
int ImageResizer::largestSide() const
46
int ImageResizer::quality() const
51
void ImageResizer::setFile(const QString& file)
60
void ImageResizer::setLargestSide(int largestSide)
62
if (largestSide <= 0) {
66
if (m_largestSide != largestSide) {
67
m_largestSide = largestSide;
68
Q_EMIT largestSideChanged();
73
void ImageResizer::setQuality(int quality)
77
} else if (quality > 100) {
80
if (m_quality != quality) {
82
Q_EMIT qualityChanged();
87
void ImageResizer::resizeImage()
90
QFileInfo source(m_file);
91
if (m_file.isEmpty() || m_largestSide <= 0 ||
92
!source.exists() || !image.load(m_file)) {
94
delete m_resizedImage;
95
m_resizedImage = NULL;
97
Q_EMIT resizedFileChanged();
102
if (image.height() > image.width()) {
103
if (m_largestSide > image.height()) {
107
scaledImage = image.scaledToHeight(m_largestSide);
110
if (m_largestSide >= image.width()) {
113
scaledImage = image.scaledToWidth(m_largestSide);
117
QString resizedFilePath = QDir::tempPath() + QDir::separator() +
118
"share-app.resized.XXXXXX." + source.suffix();
120
if (m_resizedImage) {
121
delete m_resizedImage;
122
m_resizedImage = NULL;
124
m_resizedImage = new QTemporaryFile(resizedFilePath, this);
125
m_resizedImage->open();
126
QImageWriter writer(m_resizedImage, source.suffix().toLatin1());
127
writer.write(scaledImage);
128
writer.setQuality(m_quality);
129
m_resizedImage->close();
131
Q_EMIT resizedFileChanged();