File indexing completed on 2024-03-24 16:02:10

0001 /*
0002     A command line tool to set IPTC Preview
0003 
0004     SPDX-FileCopyrightText: 2009-2012 Gilles Caulier <caulier dot gilles at gmail dot com>
0005 
0006     SPDX-License-Identifier: GPL-2.0-or-later
0007 */
0008 
0009 // Qt includes
0010 
0011 #include <QTransform>
0012 #include <QImage>
0013 #include <QString>
0014 #include <QFile>
0015 #include <QDebug>
0016 
0017 // Local includes
0018 
0019 #include "kexiv2.h"
0020 
0021 using namespace KExiv2Iface;
0022 
0023 int main (int argc, char **argv)
0024 {
0025     if (argc != 2)
0026     {
0027         qDebug() << "setiptcpreview - update/add jpeg iptc preview to image";
0028         qDebug() << "Usage: <image>";
0029         return -1;
0030     }
0031 
0032     QImage  preview;
0033     QString filePath = QString::fromLocal8Bit(argv[1]);
0034     KExiv2  meta(filePath);
0035 
0036     QImage  image(filePath);
0037     QTransform matrix;
0038     matrix.rotate(90);
0039     image = image.transformed(matrix);
0040 
0041     QSize previewSize = image.size();
0042     previewSize.scale(1280, 1024, Qt::KeepAspectRatio);
0043 
0044     // Ensure that preview is not upscaled
0045     if (previewSize.width() >= (int)image.width())
0046         preview = image.copy();
0047     else
0048         preview = image.scaled(previewSize.width(), previewSize.height(), Qt::IgnoreAspectRatio).copy();
0049 
0050     meta.setImagePreview(preview);
0051     meta.applyChanges();
0052 
0053     QImage preview2;
0054     KExiv2 meta2(filePath);
0055     meta2.getImagePreview(preview2);
0056     preview2.save(QString::fromLatin1("preview.png"), "PNG");
0057 
0058     return 0;
0059 }