From 2e199eea806a7cf627b4ac54acbde1ff041fa383 Mon Sep 17 00:00:00 2001 From: Mirco Miranda Date: Wed, 29 Jul 2026 07:42:42 +0200 Subject: [PATCH] KRA/ORA: merged in a single plugin and added metadata support - ORA/KRA: merged in a single plugin (KRA) - ORA: removed standalone plugin - KRA: use of logging category - KRA: add metadata support by processing the embedded `documentinfo.xml` - Improved signature lookup (see MR !17) and added test case --- README.md | 12 +--- autotests/ossfuzz/build_fuzzers.sh | 1 - autotests/ossfuzz/kimgio_fuzzer.cc | 7 +- autotests/read/kra/src.kra.json | 19 ++++++ autotests/read/kra/src443_32bit.json | 15 ++++ autotests/read/kra/src443_32bit.kra | Bin 0 -> 120263 bytes src/imageformats/CMakeLists.txt | 3 - src/imageformats/kra.cpp | 94 +++++++++++++++++++++---- src/imageformats/kra.json | 4 +- src/imageformats/{kra.h => kra_p.h} | 0 src/imageformats/ora.cpp | 98 --------------------------- src/imageformats/ora.h | 33 --------- src/imageformats/ora.json | 4 -- 13 files changed, 122 insertions(+), 168 deletions(-) create mode 100644 autotests/read/kra/src.kra.json create mode 100644 autotests/read/kra/src443_32bit.json create mode 100644 autotests/read/kra/src443_32bit.kra rename src/imageformats/{kra.h => kra_p.h} (100%) delete mode 100644 src/imageformats/ora.cpp delete mode 100644 src/imageformats/ora.h delete mode 100644 src/imageformats/ora.json diff --git a/README.md b/README.md index 2991da5..dc5ed6f 100644 --- a/README.md +++ b/README.md @@ -493,16 +493,10 @@ plugin: this format an hack is activated to guarantee total compatibility of the plugin with Windows. -### The KRA plugin +### The KRA and ORA plugin -The KRA format is a ZIP archive containing image data. In particular, the -rendered image in PNG format is saved in the root: the plugin reads this -image. - -### The ORA plugin - -The ORA format is a ZIP archive containing image data. In particular, the -rendered image in PNG format is saved in the root: the plugin reads this +Both KRA and ORA formats are ZIP archives containing image data. Specifically, +the rendered PNG image is saved in the root directory: the plugin reads this image. ### The PSD plugin diff --git a/autotests/ossfuzz/build_fuzzers.sh b/autotests/ossfuzz/build_fuzzers.sh index ccb333a..a26b4ae 100755 --- a/autotests/ossfuzz/build_fuzzers.sh +++ b/autotests/ossfuzz/build_fuzzers.sh @@ -165,7 +165,6 @@ HANDLER_TYPES="ani jxl jxr kra - ora pcx pfm pic diff --git a/autotests/ossfuzz/kimgio_fuzzer.cc b/autotests/ossfuzz/kimgio_fuzzer.cc index a3833c1..e3ae96f 100644 --- a/autotests/ossfuzz/kimgio_fuzzer.cc +++ b/autotests/ossfuzz/kimgio_fuzzer.cc @@ -23,7 +23,7 @@ Usage: python infra/helper.py build_image kimageformats python infra/helper.py build_fuzzers --sanitizer undefined|address|memory kimageformats - python infra/helper.py run_fuzzer kimageformats kimgio_[ani|avif|dds|exr|ff|hdr|heif|iff|jp2|jxl|jxr|kra|ora|pcx|pfm|pic|psd|pxr|qoi|ras|raw|rgb|sct|tim|tga|xcf]_fuzzer + python infra/helper.py run_fuzzer kimageformats kimgio_[ani|avif|dds|exr|ff|hdr|heif|iff|jp2|jxl|jxr|kra|pcx|pfm|pic|psd|pxr|qoi|ras|raw|rgb|sct|tim|tga|xcf]_fuzzer */ #include @@ -65,11 +65,8 @@ #include "jxr_p.h" #define HANDLER JXRHandler #elif defined KIMG_FUZZER_kra -#include "kra.h" +#include "kra_p.h" #define HANDLER KraHandler -#elif defined KIMG_FUZZER_ora -#include "ora.h" -#define HANDLER OraHandler #elif defined KIMG_FUZZER_pcx #include "pcx_p.h" #define HANDLER PCXHandler diff --git a/autotests/read/kra/src.kra.json b/autotests/read/kra/src.kra.json new file mode 100644 index 0000000..ffdce2e --- /dev/null +++ b/autotests/read/kra/src.kra.json @@ -0,0 +1,19 @@ +[ + { + "fileName" : "src.png", + "metadata" : [ + { + "key" : "CreationDate", + "value" : "2016-01-27T10:40:16" + }, + { + "key" : "ModificationDate", + "value" : "2016-01-27T10:41:28" + }, + { + "key" : "Author" , + "value" : "Boudewijn Rempt" + } + ] + } +] diff --git a/autotests/read/kra/src443_32bit.json b/autotests/read/kra/src443_32bit.json new file mode 100644 index 0000000..f223158 --- /dev/null +++ b/autotests/read/kra/src443_32bit.json @@ -0,0 +1,15 @@ +[ + { + "fileName" : "src.png", + "metadata" : [ + { + "key" : "CreationDate", + "value" : "2016-01-27T10:40:16" + }, + { + "key" : "ModificationDate", + "value" : "2026-07-16T07:00:36" + } + ] + } +] diff --git a/autotests/read/kra/src443_32bit.kra b/autotests/read/kra/src443_32bit.kra new file mode 100644 index 0000000000000000000000000000000000000000..2a475baa123c1ec9fd43cb8aeccf8bbd468812c3 GIT binary patch literal 120263 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 literal 0 HcmV?d00001 diff --git a/src/imageformats/CMakeLists.txt b/src/imageformats/CMakeLists.txt index 202681e..2398f48 100644 --- a/src/imageformats/CMakeLists.txt +++ b/src/imageformats/CMakeLists.txt @@ -182,7 +182,4 @@ if (KF6Archive_FOUND) kimageformats_add_plugin(kimg_kra SOURCES kra.cpp) target_link_libraries(kimg_kra PRIVATE KF6::Archive) - kimageformats_add_plugin(kimg_ora SOURCES ora.cpp) - target_link_libraries(kimg_ora PRIVATE KF6::Archive) - endif() diff --git a/src/imageformats/kra.cpp b/src/imageformats/kra.cpp index ef587d7..6dbfc24 100644 --- a/src/imageformats/kra.cpp +++ b/src/imageformats/kra.cpp @@ -1,6 +1,7 @@ /* This file is part of the KDE project SPDX-FileCopyrightText: 2013 Boudewijn Rempt + SPDX-FileCopyrightText: 2026 Mirco Miranda SPDX-License-Identifier: LGPL-2.0-or-later @@ -8,16 +9,23 @@ on public domain. See: http://tulrich.com/geekstuff/ */ -#include "kra.h" +#include "kra_p.h" +#include "util_p.h" #include +#include #include #include #include +#include +#include -static constexpr char s_magic[] = "application/x-krita"; -static constexpr int s_magic_size = sizeof(s_magic) - 1; // -1 to remove the last \0 +Q_DECLARE_LOGGING_CATEGORY(LOG_KRAPLUGIN) +Q_LOGGING_CATEGORY(LOG_KRAPLUGIN, "kf.imageformats.plugins.kra", QtWarningMsg) + +#define ORA_MAGIC QByteArrayView("image/openraster") +#define KRA_MAGIC QByteArrayView("application/x-krita") KraHandler::KraHandler() { @@ -32,6 +40,55 @@ bool KraHandler::canRead() const return false; } +static bool addMetadata(QImage *image, const QByteArray& rawXml) +{ + if (image == nullptr) { + return false; + } + QXmlStreamReader xml(rawXml); + for(QString key; !xml.atEnd();) { + auto tt = xml.readNext(); + if (tt == QXmlStreamReader::StartElement) { + key = xml.name().toString().toLower(); + } + else if (tt == QXmlStreamReader::EndElement) { + key.clear(); + } + else if (tt == QXmlStreamReader::Characters) { + auto text = xml.text().toString().trimmed(); + if (text.isEmpty() || key.isEmpty()) + continue; + if (key == QStringLiteral("title")) { + image->setText(QStringLiteral(META_KEY_TITLE), text); + } + else if (key == QStringLiteral("abstract")) { + image->setText(QStringLiteral(META_KEY_DESCRIPTION), text); + } + else if (key == QStringLiteral("full-name")) { + image->setText(QStringLiteral(META_KEY_AUTHOR), text); + } + else if (key == QStringLiteral("date")) { + if (QDateTime::fromString(text, Qt::ISODate).isValid()) + image->setText(QStringLiteral(META_KEY_MODIFICATIONDATE), text); + } + else if (key == QStringLiteral("creation-date")) { + if (QDateTime::fromString(text, Qt::ISODate).isValid()) + image->setText(QStringLiteral(META_KEY_CREATIONDATE), text); + } + else if (key == QStringLiteral("keyword")) { + image->setText(QStringLiteral(META_KEY_KEYWORDS), text); + } + else if (key == QStringLiteral("license")) { + image->setText(QStringLiteral(META_KEY_COPYRIGHT), text); + } + else { + qCDebug(LOG_KRAPLUGIN) << "Unmanaged metadata:" << key << text; + } + } + } + return !xml.hasError(); +} + bool KraHandler::read(QImage *image) { KZip zip(device()); @@ -39,14 +96,26 @@ bool KraHandler::read(QImage *image) return false; } + // reading the image const KArchiveEntry *entry = zip.directory()->entry(QStringLiteral("mergedimage.png")); if (!entry || !entry->isFile()) { return false; } - const KZipFileEntry *fileZipEntry = static_cast(entry); + if (!image->loadFromData(fileZipEntry->data(), "PNG")) { + qCCritical(LOG_KRAPLUGIN) << "Invalid image."; + return false; + } - image->loadFromData(fileZipEntry->data(), "PNG"); + // reading metadata + const KArchiveEntry *metaEntry = zip.directory()->entry(QStringLiteral("documentinfo.xml")); + if (!metaEntry || !metaEntry->isFile()) { + return true; // the image is still valid + } + const KZipFileEntry *metaZipEntry = static_cast(metaEntry); + if (!addMetadata(image, metaZipEntry->data())) { + qCWarning(LOG_KRAPLUGIN) << "XML metadat seems invalid."; + } return true; } @@ -54,24 +123,23 @@ bool KraHandler::read(QImage *image) bool KraHandler::canRead(QIODevice *device) { if (!device) { - qWarning("KraHandler::canRead() called with no device"); + qCWarning(LOG_KRAPLUGIN) << "KraHandler::canRead() called with no device"; return false; } if (device->isSequential()) { return false; } - char buff[57]; - if (device->peek(buff, sizeof(buff)) == sizeof(buff)) { - return memcmp(buff + 0x26, s_magic, s_magic_size) == 0; + auto head = device->peek(100); + if (!head.startsWith(QByteArrayView("PK"))) { + return false; } - - return false; + return head.contains(KRA_MAGIC) || head.contains(ORA_MAGIC); } QImageIOPlugin::Capabilities KraPlugin::capabilities(QIODevice *device, const QByteArray &format) const { - if (format == "kra" || format == "KRA") { + if (format == "kra" || format == "ora") { return Capabilities(CanRead); } if (!format.isEmpty()) { @@ -96,4 +164,4 @@ QImageIOHandler *KraPlugin::create(QIODevice *device, const QByteArray &format) return handler; } -#include "moc_kra.cpp" +#include "moc_kra_p.cpp" diff --git a/src/imageformats/kra.json b/src/imageformats/kra.json index 6307531..eeefa99 100644 --- a/src/imageformats/kra.json +++ b/src/imageformats/kra.json @@ -1,4 +1,4 @@ { - "Keys": [ "kra" ], - "MimeTypes": [ "application/x-krita" ] + "Keys": [ "kra", "ora" ], + "MimeTypes": [ "application/x-krita", "image/openraster" ] } diff --git a/src/imageformats/kra.h b/src/imageformats/kra_p.h similarity index 100% rename from src/imageformats/kra.h rename to src/imageformats/kra_p.h diff --git a/src/imageformats/ora.cpp b/src/imageformats/ora.cpp deleted file mode 100644 index 0b785b4..0000000 --- a/src/imageformats/ora.cpp +++ /dev/null @@ -1,98 +0,0 @@ -/* - This file is part of the KDE project - SPDX-FileCopyrightText: 2013 Boudewijn Rempt - - SPDX-License-Identifier: LGPL-2.0-or-later - - This code is based on Thacher Ulrich PSD loading code released - on public domain. See: http://tulrich.com/geekstuff/ -*/ - -#include "ora.h" - -#include -#include - -#include - -static constexpr char s_magic[] = "image/openraster"; -static constexpr int s_magic_size = sizeof(s_magic) - 1; // -1 to remove the last \0 - -OraHandler::OraHandler() -{ -} - -bool OraHandler::canRead() const -{ - if (canRead(device())) { - setFormat("ora"); - return true; - } - return false; -} - -bool OraHandler::read(QImage *image) -{ - KZip zip(device()); - if (!zip.open(QIODevice::ReadOnly)) { - return false; - } - - const KArchiveEntry *entry = zip.directory()->entry(QStringLiteral("mergedimage.png")); - if (!entry || !entry->isFile()) { - return false; - } - - const KZipFileEntry *fileZipEntry = static_cast(entry); - - image->loadFromData(fileZipEntry->data(), "PNG"); - - return true; -} - -bool OraHandler::canRead(QIODevice *device) -{ - if (!device) { - qWarning("OraHandler::canRead() called with no device"); - return false; - } - if (device->isSequential()) { - return false; - } - - char buff[54]; - if (device->peek(buff, sizeof(buff)) == sizeof(buff)) { - return memcmp(buff + 0x26, s_magic, s_magic_size) == 0; - } - - return false; -} - -QImageIOPlugin::Capabilities OraPlugin::capabilities(QIODevice *device, const QByteArray &format) const -{ - if (format == "ora" || format == "ORA") { - return Capabilities(CanRead); - } - if (!format.isEmpty()) { - return {}; - } - if (!device->isOpen()) { - return {}; - } - - Capabilities cap; - if (device->isReadable() && OraHandler::canRead(device)) { - cap |= CanRead; - } - return cap; -} - -QImageIOHandler *OraPlugin::create(QIODevice *device, const QByteArray &format) const -{ - QImageIOHandler *handler = new OraHandler; - handler->setDevice(device); - handler->setFormat(format); - return handler; -} - -#include "moc_ora.cpp" diff --git a/src/imageformats/ora.h b/src/imageformats/ora.h deleted file mode 100644 index 58d134d..0000000 --- a/src/imageformats/ora.h +++ /dev/null @@ -1,33 +0,0 @@ -/* - This file is part of the KDE project - SPDX-FileCopyrightText: 2013 Boudewijn Rempt - - SPDX-License-Identifier: LGPL-2.0-or-later -*/ - -#ifndef KIMG_ORA_H -#define KIMG_ORA_H - -#include - -class OraHandler : public QImageIOHandler -{ -public: - OraHandler(); - - bool canRead() const override; - bool read(QImage *image) override; - - static bool canRead(QIODevice *device); -}; - -class OraPlugin : public QImageIOPlugin -{ - Q_OBJECT - Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QImageIOHandlerFactoryInterface" FILE "ora.json") -public: - Capabilities capabilities(QIODevice *device, const QByteArray &format) const override; - QImageIOHandler *create(QIODevice *device, const QByteArray &format = QByteArray()) const override; -}; - -#endif diff --git a/src/imageformats/ora.json b/src/imageformats/ora.json deleted file mode 100644 index c12d7f8..0000000 --- a/src/imageformats/ora.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "Keys": [ "ora" ], - "MimeTypes": [ "image/openraster" ] -}