QImageIOHandler Class

Die Klasse QImageIOHandler definiert die gemeinsame Bild-I/O-Schnittstelle für alle Bildformate in Qt. Mehr...

Kopfzeile: #include <QImageIOHandler>
CMake: find_package(Qt6 REQUIRED COMPONENTS Gui)
target_link_libraries(mytarget PRIVATE Qt6::Gui)
qmake: QT += gui

Hinweis: Alle Funktionen in dieser Klasse sind reentrant.

Öffentliche Typen

enum ImageOption { Size, ClipRect, ScaledSize, ScaledClipRect, Description, …, ImageTransformation }
enum Transformation { TransformationNone, TransformationMirror, TransformationFlip, TransformationRotate180, TransformationRotate90, …, TransformationRotate270 }
flags Transformations

Öffentliche Funktionen

QImageIOHandler()
virtual ~QImageIOHandler()
virtual bool canRead() const = 0
virtual int currentImageNumber() const
virtual QRect currentImageRect() const
QIODevice *device() const
QByteArray format() const
virtual int imageCount() const
virtual bool jumpToImage(int imageNumber)
virtual bool jumpToNextImage()
virtual int loopCount() const
virtual int nextImageDelay() const
virtual QVariant option(QImageIOHandler::ImageOption option) const
virtual bool read(QImage *image) = 0
void setDevice(QIODevice *device)
void setFormat(const QByteArray &format)
void setFormat(const QByteArray &format) const
virtual void setOption(QImageIOHandler::ImageOption option, const QVariant &value)
virtual bool supportsOption(QImageIOHandler::ImageOption option) const
virtual bool write(const QImage &image)

Statische öffentliche Mitglieder

(since 6.0) bool allocateImage(QSize size, QImage::Format format, QImage *image)

Detaillierte Beschreibung

Qt verwendet QImageIOHandler zum Lesen und Schreiben von Bildern über QImageReader und QImageWriter. Sie können auch von dieser Klasse ableiten, um Ihren eigenen Bildformat-Handler zu schreiben, indem Sie den Plugin-Mechanismus von Qt verwenden.

Rufen Sie setDevice() auf, um dem Handler ein Gerät zuzuweisen, und setFormat(), um ihm ein Format zuzuweisen. Ein QImageIOHandler kann mehr als ein Bildformat unterstützen. canRead() gibt true zurück, wenn ein Bild von dem Gerät gelesen werden kann, und read() und write() geben true zurück, wenn das Lesen oder Schreiben eines Bildes erfolgreich abgeschlossen wurde.

QImageIOHandler hat auch Unterstützung für Animationsformate, durch die Funktionen loopCount(), imageCount(), nextImageDelay() und currentImageNumber().

Um festzustellen, welche Optionen ein Image-Handler unterstützt, ruft Qt supportsOption() und setOption() auf. Stellen Sie sicher, dass Sie diese Funktionen neu implementieren, wenn Sie Unterstützung für eine der Optionen im ImageOption enum anbieten können.

Um Ihren eigenen Image-Handler zu schreiben, müssen Sie zumindest canRead() und read() neu implementieren. Dann erstellen Sie ein QImageIOPlugin, das den Handler erstellen kann. Installieren Sie schließlich Ihr Plugin, und QImageReader und QImageWriter werden dann automatisch das Plugin laden und es verwenden.

Siehe auch QImageIOPlugin, QImageReader, und QImageWriter.

Dokumentation der Mitgliedstypen

enum QImageIOHandler::ImageOption

Diese Aufzählung beschreibt die verschiedenen Optionen, die von QImageIOHandler unterstützt werden. Einige Optionen werden verwendet, um ein Bild nach Eigenschaften abzufragen, und andere werden verwendet, um die Art und Weise, wie ein Bild geschrieben werden soll, umzuschalten.

KonstanteWertBeschreibung
QImageIOHandler::Size0Die Originalgröße eines Bildes. Von einem Handler, der diese Option unterstützt, wird erwartet, dass er die Größe des Bildes aus den Bildmetadaten liest und diese Größe von option() als QSize zurückgibt.
QImageIOHandler::ClipRect1Das Clip-Rect oder ROI (Region Of Interest). Von einem Handler, der diese Option unterstützt, wird erwartet, dass er nur den angegebenen QRect Bereich aus dem Originalbild in read() liest, bevor irgendeine andere Transformation angewendet wird.
QImageIOHandler::ScaledSize4Die skalierte Größe des Bildes. Von einem Handler, der diese Option unterstützt, wird erwartet, dass er das Bild auf die angegebene Größe ( QSize) skaliert, nachdem er eine ClipRect-Transformation (ClipRect) angewendet hat. Wenn der Handler diese Option nicht unterstützt, führt QImageReader die Skalierung nach dem Einlesen des Bildes durch.
QImageIOHandler::ScaledClipRect3Das skalierte Clip-Rect (oder ROI, Region Of Interest) des Bildes. Von einem Handler, der diese Option unterstützt, wird erwartet, dass er das angegebene Clip-Rect ( QRect) anwendet, nachdem eine Skalierung (ScaleSize) oder ein regulärer Ausschnitt (ClipRect) vorgenommen wurde. Wenn der Handler diese Option nicht unterstützt, wendet QImageReader das skalierte Clip-Rect an, nachdem das Bild eingelesen wurde.
QImageIOHandler::Description2Die Bildbeschreibung. Einige Bildformate, wie z. B. GIF und PNG, erlauben die Einbettung von Text oder Kommentaren in die Bilddaten (z. B. zur Speicherung von Copyright-Informationen). Üblicherweise wird der Text in Schlüssel-Wert-Paaren gespeichert, aber einige Formate speichern den gesamten Text in einem einzigen zusammenhängenden Block. QImageIOHandler gibt den Text als einen QString zurück, wobei Schlüssel und Werte durch ein ':' getrennt sind und Schlüssel-Wert-Paare durch zwei Zeilenumbrüche (\n\n) getrennt werden. Zum Beispiel: "Titel: Sunset\n\nAuthor: Jim Smith\nSarah Jones\n\n". Formate, die Text in einem einzigen Block speichern, können "Beschreibung" als Schlüssel verwenden.
QImageIOHandler::CompressionRatio5Das Komprimierungsverhältnis der Bilddaten. Von einem Handler, der diese Option unterstützt, wird erwartet, dass er beim Schreiben seine Kompressionsrate in Abhängigkeit vom Wert dieser Option (ein int) festlegt.
QImageIOHandler::Gamma6Der Gamma-Wert des Bildes. Von einem Handler, der diese Option unterstützt, wird erwartet, dass er beim Schreiben den Gammawert des Bildes in Abhängigkeit vom Wert dieser Option (ein Float) festlegt.
QImageIOHandler::Quality7Die Qualitätsstufe des Bildes. Von einem Handler, der diese Option unterstützt, wird erwartet, dass er beim Schreiben die Qualitätsstufe des Bildes in Abhängigkeit vom Wert dieser Option (ein int) festlegt.
QImageIOHandler::Name8Der Name des Bildes. Von einem Handler, der diese Option unterstützt, wird erwartet, dass er den Namen aus den Metadaten des Bildes liest und als QString zurückgibt, oder beim Schreiben eines Bildes den Namen in den Metadaten des Bildes speichert.
QImageIOHandler::SubType9Der Subtyp des Bildes. Ein Handler, der diese Option unterstützt, kann den Wert des Subtyps als Hilfe beim Lesen und Schreiben von Bildern verwenden. Ein PPM-Handler kann beispielsweise einen Subtyp-Wert von "ppm" oder "ppmraw" haben.
QImageIOHandler::IncrementalReading10Von einem Handler, der diese Option unterstützt, wird erwartet, dass er das Bild in mehreren Durchgängen liest, als ob es sich um eine Animation handelt. QImageReader behandelt das Bild wie eine Animation.
QImageIOHandler::Endianness11Die Endianness des Bildes. Bestimmte Bildformate können als BigEndian oder LittleEndian gespeichert werden. Ein Handler, der Endianness unterstützt, verwendet den Wert dieser Option, um zu bestimmen, wie das Bild gespeichert werden soll.
QImageIOHandler::Animation12Bildformate, die Animation unterstützen, geben für diesen Wert in supportsOption() true zurück; andernfalls wird false zurückgegeben.
QImageIOHandler::BackgroundColor13Bei bestimmten Bildformaten kann die Hintergrundfarbe angegeben werden. Ein Handler, der BackgroundColor unterstützt, initialisiert die Hintergrundfarbe beim Einlesen eines Bildes mit dieser Option ( QColor).
QImageIOHandler::ImageFormat14Das Datenformat des Bildes, das vom Handler zurückgegeben wird. Dies kann jedes der in QImage::Format aufgeführten Formate sein.
QImageIOHandler::SupportedSubTypes15Bildformate, die verschiedene Speichervarianten unterstützen, sollten in dieser Option eine Liste der unterstützten Variantennamen (QList<QByteArray>) zurückgeben.
QImageIOHandler::OptimizedWrite16Von einem Handler, der diese Option unterstützt, wird erwartet, dass er beim Schreiben Optimierungsflags einschaltet.
QImageIOHandler::ProgressiveScanWrite17Von einem Handler, der diese Option unterstützt, wird erwartet, dass er das Bild als Progressive-Scan-Bild schreibt.
QImageIOHandler::ImageTransformation18Ein Handler, der diese Option unterstützt, kann die Transformations-Metadaten eines Bildes lesen. Ein Handler, der diese Option unterstützt, sollte die Transformation nicht selbst durchführen.

enum QImageIOHandler::Transformation
flags QImageIOHandler::Transformations

Diese Aufzählung beschreibt die verschiedenen Transformationen oder Ausrichtungen, die von einigen Bildformaten unterstützt werden, normalerweise durch EXIF.

KonstanteWertBeschreibung
QImageIOHandler::TransformationNone0Es soll keine Transformation angewendet werden.
QImageIOHandler::TransformationMirror1Das Bild horizontal spiegeln.
QImageIOHandler::TransformationFlip2Das Bild vertikal spiegeln.
QImageIOHandler::TransformationRotate180TransformationMirror | TransformationFlipDrehen des Bildes um 180 Grad. Dies ist dasselbe wie eine horizontale und vertikale Spiegelung des Bildes.
QImageIOHandler::TransformationRotate904Drehen Sie das Bild um 90 Grad.
QImageIOHandler::TransformationMirrorAndRotate90TransformationMirror | TransformationRotate90Spiegeln Sie das Bild horizontal und drehen Sie es dann um 90 Grad.
QImageIOHandler::TransformationFlipAndRotate90TransformationFlip | TransformationRotate90Spiegeln Sie das Bild vertikal und drehen Sie es dann um 90 Grad.
QImageIOHandler::TransformationRotate270TransformationRotate180 | TransformationRotate90Drehen Sie das Bild um 270 Grad. Dies ist dasselbe wie das Spiegeln des Bildes in horizontaler und vertikaler Richtung und das anschließende Drehen um 90 Grad.

Der Typ Transformations ist ein Typedef für QFlags<Transformation>. Er speichert eine ODER-Kombination von Transformationswerten.

Siehe auch QImageReader::transformation(), QImageReader::setAutoTransform(), und QImageWriter::setTransformation().

Dokumentation der Mitgliedsfunktionen

QImageIOHandler::QImageIOHandler()

Konstruiert ein QImageIOHandler-Objekt.

[virtual noexcept] QImageIOHandler::~QImageIOHandler()

Zerstört das Objekt QImageIOHandler.

[static, since 6.0] bool QImageIOHandler::allocateImage(QSize size, QImage::Format format, QImage *image)

Dies ist eine Komfortmethode für die Lesefunktion in Unterklassen. Bildformat-Handler müssen das Laden eines Bildes ablehnen, wenn die erforderliche Zuweisung die aktuelle Zuweisungsgrenze überschreiten würde. Diese Funktion prüft die Parameter und das Limit und führt die Zuweisung durch, wenn sie gültig und erforderlich ist. Bei erfolgreicher Rückkehr wird image ein gültiges, abgetrenntes QImage der angegebenen size und format sein.

Diese Funktion wurde in Qt 6.0 eingeführt.

Siehe auch QImageReader::allocationLimit().

[pure virtual] bool QImageIOHandler::canRead() const

Gibt true zurück, wenn ein Bild vom Gerät gelesen werden kann (d. h., das Bildformat wird unterstützt, das Gerät kann gelesen werden und die anfänglichen Header-Informationen legen nahe, dass das Bild gelesen werden kann); andernfalls wird false zurückgegeben.

Stellen Sie bei der Neuimplementierung von canRead() sicher, dass das E/A-Gerät (device()) in seinem ursprünglichen Zustand belassen wird (z. B. durch Verwendung von peek() anstelle von read()).

Siehe auch read() und QIODevice::peek().

[virtual] int QImageIOHandler::currentImageNumber() const

Bei Bildformaten, die Animation unterstützen, gibt diese Funktion die Sequenznummer des aktuellen Bildes in der Animation zurück. Wenn diese Funktion aufgerufen wird, bevor ein Bild read() ist, wird -1 zurückgegeben. Die Nummer des ersten Bildes in der Sequenz ist 0.

Wenn das Bildformat keine Animation unterstützt, wird 0 zurückgegeben.

Siehe auch read().

[virtual] QRect QImageIOHandler::currentImageRect() const

Gibt das Rect des aktuellen Bildes zurück. Wenn kein Rect für das Bild definiert ist, wird ein leeres QRect() zurückgegeben.

Diese Funktion ist nützlich für Animationen, bei denen jeweils nur Teile des Bildes aktualisiert werden können.

QIODevice *QImageIOHandler::device() const

Gibt das Gerät zurück, das derzeit dem QImageIOHandler zugewiesen ist. Wenn kein Gerät zugewiesen wurde, wird nullptr zurückgegeben.

Siehe auch setDevice().

QByteArray QImageIOHandler::format() const

Gibt das Format zurück, das derzeit QImageIOHandler zugewiesen ist. Wurde kein Format zugewiesen, wird eine leere Zeichenkette zurückgegeben.

Siehe auch setFormat().

[virtual] int QImageIOHandler::imageCount() const

Bei Bildformaten, die Animation unterstützen, gibt diese Funktion die Anzahl der Bilder in der Animation zurück. Wenn das Bildformat keine Animation unterstützt oder wenn es nicht in der Lage ist, die Anzahl der Bilder zu bestimmen, wird 0 zurückgegeben.

Die Standardimplementierung gibt 1 zurück, wenn canRead() true zurückgibt; andernfalls wird 0 zurückgegeben.

[virtual] bool QImageIOHandler::jumpToImage(int imageNumber)

Bei Bildformaten, die Animation unterstützen, springt diese Funktion zu dem Bild, dessen Sequenznummer imageNumber lautet. Beim nächsten Aufruf von read() wird versucht, dieses Bild zu lesen.

Die Standardimplementierung tut nichts und gibt false zurück.

[virtual] bool QImageIOHandler::jumpToNextImage()

Bei Bildformaten, die Animation unterstützen, springt diese Funktion zum nächsten Bild.

Die Standardimplementierung tut nichts und gibt false zurück.

[virtual] int QImageIOHandler::loopCount() const

Bei Bildformaten, die Animation unterstützen, gibt diese Funktion die Anzahl der Schleifen zurück, die die Animation durchlaufen soll. Unterstützt das Bildformat keine Animation, wird 0 zurückgegeben.

[virtual] int QImageIOHandler::nextImageDelay() const

Bei Bildformaten, die Animation unterstützen, gibt diese Funktion die Anzahl der Millisekunden zurück, die bis zum Lesen des nächsten Bildes gewartet werden muss. Wenn das Bildformat keine Animation unterstützt, wird 0 zurückgegeben.

[virtual] QVariant QImageIOHandler::option(QImageIOHandler::ImageOption option) const

Gibt den option zugewiesenen Wert als QVariant zurück. Der Typ des Wertes hängt von der Option ab. Zum Beispiel gibt option(Größe) eine QSize Variante zurück.

Siehe auch setOption() und supportsOption().

[pure virtual] bool QImageIOHandler::read(QImage *image)

Liest ein Bild aus dem Gerät und speichert es in image. Gibt true zurück, wenn das Bild erfolgreich gelesen wurde; andernfalls wird false zurückgegeben.

Bei Bildformaten, die inkrementelles Laden unterstützen, und bei Animationsformaten kann der Image-Handler davon ausgehen, dass image auf das vorherige Bild zeigt.

Siehe auch canRead().

void QImageIOHandler::setDevice(QIODevice *device)

Setzt das Gerät von QImageIOHandler auf device. Der Image-Handler wird dieses Gerät beim Lesen und Schreiben von Bildern verwenden.

Das Gerät kann nur einmal gesetzt werden und muss vor dem Aufruf von canRead(), read(), write(), usw. gesetzt werden. Wenn Sie mehrere Dateien lesen müssen, erstellen Sie mehrere Instanzen der entsprechenden QImageIOHandler Unterklasse.

Siehe auch device().

void QImageIOHandler::setFormat(const QByteArray &format)

Setzt das Format von QImageIOHandler auf format. Das Format ist besonders nützlich für Handler, die mehrere Bildformate unterstützen.

Siehe auch format().

void QImageIOHandler::setFormat(const QByteArray &format) const

Setzt das Format von QImageIOHandler auf format. Das Format ist besonders nützlich für Handler, die mehrere Bildformate unterstützen.

Diese Funktion ist als const deklariert, damit sie von canRead() aufgerufen werden kann.

Siehe auch format().

[virtual] void QImageIOHandler::setOption(QImageIOHandler::ImageOption option, const QVariant &value)

Setzt die Option option auf den Wert value.

Siehe auch option() und ImageOption.

[virtual] bool QImageIOHandler::supportsOption(QImageIOHandler::ImageOption option) const

Gibt true zurück, wenn QImageIOHandler die Option option unterstützt; andernfalls gibt es false zurück. Wenn zum Beispiel QImageIOHandler die Option Size unterstützt, muss supportsOption(Size) true zurückgeben.

Siehe auch setOption() und option().

[virtual] bool QImageIOHandler::write(const QImage &image)

Schreibt das Bild image auf das zugewiesene Gerät. Gibt bei Erfolg true zurück, andernfalls false.

Die Standardimplementierung tut nichts und gibt einfach false zurück.

© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.