QImageIOHandler Class
Die Klasse „QImageIOHandler“ definiert die gemeinsame Bild-E/A-Schnittstelle für alle Bildformate in Qt. Mehr...
| Header: | #include <QImageIOHandler> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Gui) target_link_libraries(mytarget PRIVATE Qt6::Gui) |
| qmake: | QT += gui |
Hinweis: Alle Funktionen 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) |
Ausführliche Beschreibung
Qt verwendet `QImageIOHandler` zum Lesen und Schreiben von Bildern über ` QImageReader ` und ` QImageWriter`. Sie können auch von dieser Klasse ableiten, um mithilfe des Qt-Plugin-Mechanismus einen eigenen Handler für ein Bildformat zu erstellen.
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 vom Gerät gelesen werden kann, und ` read()` sowie ` write()` geben `true` zurück, wenn das Lesen bzw. Schreiben eines Bildes erfolgreich abgeschlossen wurde.
QImageIOHandler bietet außerdem Unterstützung für Animationsformate über die Funktionen „ loopCount()“, „ imageCount()“, „ nextImageDelay()“ und „ currentImageNumber()“.
Um festzustellen, welche Optionen ein Bild-Handler unterstützt, ruft Qt die Funktionen ` supportsOption()` und ` setOption()` auf. Stellen Sie sicher, dass Sie diese Funktionen neu implementieren, wenn Sie Unterstützung für eine der Optionen in der Enumeration ` ImageOption ` bieten können.
Um einen eigenen Bild-Handler zu schreiben, müssen Sie mindestens canRead() und read() neu implementieren. Erstellen Sie anschließend eine QImageIOPlugin, die den Handler erstellen kann. Installieren Sie schließlich Ihr Plugin; QImageReader und QImageWriter laden das Plugin dann automatisch und beginnen, es zu verwenden.
Siehe auch QImageIOPlugin, QImageReader und QImageWriter.
Dokumentation zu Mitgliedstypen
enum QImageIOHandler::ImageOption
Diese Enumeration beschreibt die verschiedenen Optionen, die von QImageIOHandler unterstützt werden. Einige Optionen dienen dazu, Eigenschaften eines Bildes abzufragen, andere dazu, die Art und Weise festzulegen, wie ein Bild geschrieben werden soll.
| Konstante | Wert | Beschreibung |
|---|---|---|
QImageIOHandler::Size | 0 | Die Originalgröße eines Bildes. Von einem Handler, der diese Option unterstützt, wird erwartet, dass er die Größe des Bildes aus den Bildmetadaten ausliest und diese Größe über ` option()` als ` QSize` zurückgibt. |
QImageIOHandler::ClipRect | 1 | readDer Ausschnittbereich (Clip Rect) oder ROI (Region Of Interest). Von einem Handler, der diese Option unterstützt, wird erwartet, dass er in ` QRect ()` lediglich den angegebenen ` `-Bereich aus dem Originalbild ausliest, bevor andere Transformationen angewendet werden. |
QImageIOHandler::ScaledSize | 4 | Die skalierte Größe des Bildes. Von einem Handler, der diese Option unterstützt, wird erwartet, dass er das Bild nach Anwendung einer Clip-Rect-Transformation (ClipRect) auf die angegebene Größe (ein QSize) skaliert. Wenn der Handler diese Option nicht unterstützt, führt QImageReader die Skalierung nach dem Einlesen des Bildes durch. |
QImageIOHandler::ScaledClipRect | 3 | Das skalierte Ausschnittrechteck (oder ROI, Region Of Interest) des Bildes. Von einem Handler, der diese Option unterstützt, wird erwartet, dass er das angegebene Ausschnittrechteck (ein ` QRect`) anwendet, nachdem etwaige Skalierungen (`ScaleSize`) oder reguläre Ausschnitte (`ClipRect`) vorgenommen wurden. Wenn der Handler diese Option nicht unterstützt, wendet ` QImageReader ` das skalierte Ausschnittrechteck an, nachdem das Bild gelesen wurde. |
QImageIOHandler::Description | 2 | Die Bildbeschreibung. Einige Bildformate, wie z. B. GIF und PNG, ermöglichen das Einbetten von Text oder Kommentaren in die Bilddaten (z. B. zum Speichern von Copyright-Informationen). Häufig wird der Text in Schlüssel-Wert-Paaren gespeichert, manche Formate speichern den gesamten Text jedoch in einem zusammenhängenden Block. ` QImageIOHandler ` gibt den Text als ein einziges ` QString` zurück, wobei Schlüssel und Werte durch ein „:“ getrennt sind und Schlüssel-Wert-Paare durch zwei Zeilenumbrüche getrennt werden (\n\n ). Beispiel: „Title: Sunset\n\nAuthor : Jim Smith\nSarah Jones\n\n “. Formate, die Text in einem einzigen Block speichern, können „Description“ als Schlüssel verwenden. |
QImageIOHandler::CompressionRatio | 5 | Das Kompressionsverhältnis der Bilddaten. Von einem Handler, der diese Option unterstützt, wird erwartet, dass er beim Schreiben seine Kompressionsrate entsprechend dem Wert dieser Option (ein int) festlegt. |
QImageIOHandler::Gamma | 6 | Der Gammawert des Bildes. Von einem Handler, der diese Option unterstützt, wird erwartet, dass er beim Schreiben den Gammawert des Bildes entsprechend dem Wert dieser Option (ein Float) festlegt. |
QImageIOHandler::Quality | 7 | Die Qualitätsstufe des Bildes. Von einem Handler, der diese Option unterstützt, wird erwartet, dass er beim Schreiben die Bildqualitätsstufe entsprechend dem Wert dieser Option (ein int) festlegt. |
QImageIOHandler::Name | 8 | Der Name des Bildes. Von einem Handler, der diese Option unterstützt, wird erwartet, dass er den Namen aus den Bildmetadaten ausliest und diesen als ` QString` zurückgibt; beim Schreiben eines Bildes wird erwartet, dass er den Namen in den Bildmetadaten speichert. |
QImageIOHandler::SubType | 9 | Der Subtyp des Bildes. Ein Handler, der diese Option unterstützt, kann den Subtypwert beim Lesen und Schreiben von Bildern heranziehen. Beispielsweise kann ein PPM-Handler einen Subtypwert von „ppm“ oder „ppmraw“ haben. |
QImageIOHandler::IncrementalReading | 10 | Von einem Handler, der diese Option unterstützt, wird erwartet, dass er das Bild in mehreren Durchläufen liest, als handele es sich um eine Animation. „ QImageReader “ behandelt das Bild als Animation. |
QImageIOHandler::Endianness | 11 | Die 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::Animation | 12 | Bildformate, die Animationen unterstützen, geben für diesen Wert in ` supportsOption()` den Wert „true“ zurück; andernfalls wird „false“ zurückgegeben. |
QImageIOHandler::BackgroundColor | 13 | Bestimmte Bildformate ermöglichen die Angabe einer Hintergrundfarbe. Ein Handler, der „BackgroundColor“ unterstützt, initialisiert die Hintergrundfarbe beim Einlesen eines Bildes auf den Wert dieser Option (ein „ QColor “). |
QImageIOHandler::ImageFormat | 14 | Das vom Handler zurückgegebene Datenformat des Bildes. Dies kann eines der in „ QImage::Format “ aufgeführten Formate sein. |
QImageIOHandler::SupportedSubTypes | 15 | Bildformate, die verschiedene Speichervarianten unterstützen, sollten in dieser Option eine Liste der unterstützten Variantennamen (QList<QByteArray>) zurückgeben. |
QImageIOHandler::OptimizedWrite | 16 | Von einem Handler, der diese Option unterstützt, wird erwartet, dass er beim Schreiben Optimierungsflags aktiviert. |
QImageIOHandler::ProgressiveScanWrite | 17 | Von einem Handler, der diese Option unterstützt, wird erwartet, dass er das Bild als Progressive-Scan-Bild schreibt. |
QImageIOHandler::ImageTransformation | 18 | Ein Handler, der diese Option unterstützt, kann die Transformationsmetadaten eines Bildes lesen. Ein Handler, der diese Option unterstützt, sollte die Transformation selbst nicht anwenden. |
enum QImageIOHandler::Transformation
flags QImageIOHandler::Transformations
Diese Aufzählung beschreibt die verschiedenen Transformationen oder Ausrichtungen, die von einigen Bildformaten unterstützt werden, in der Regel über EXIF.
| Konstante | Wert | Beschreibung |
|---|---|---|
QImageIOHandler::TransformationNone | 0 | Es soll keine Transformation angewendet werden. |
QImageIOHandler::TransformationMirror | 1 | Das Bild horizontal spiegeln. |
QImageIOHandler::TransformationFlip | 2 | Das Bild vertikal spiegeln. |
QImageIOHandler::TransformationRotate180 | TransformationMirror | TransformationFlip | Das Bild um 180 Grad drehen. Dies entspricht einer horizontalen und vertikalen Spiegelung. |
QImageIOHandler::TransformationRotate90 | 4 | Drehen Sie das Bild um 90 Grad. |
QImageIOHandler::TransformationMirrorAndRotate90 | TransformationMirror | TransformationRotate90 | Spiegeln Sie das Bild horizontal und drehen Sie es anschließend um 90 Grad. |
QImageIOHandler::TransformationFlipAndRotate90 | TransformationFlip | TransformationRotate90 | Spiegeln Sie das Bild vertikal und drehen Sie es anschließend um 90 Grad. |
QImageIOHandler::TransformationRotate270 | TransformationRotate180 | TransformationRotate90 | Drehen Sie das Bild um 270 Grad. Dies entspricht einer Spiegelung sowohl horizontal als auch vertikal und einer anschließenden Drehung um 90 Grad. |
Der Typ „Transformations“ ist ein typedef für QFlags<Transformation>. Er speichert eine OR-Kombination von Transformation-Werten.
Siehe auch QImageReader::transformation(), QImageReader::setAutoTransform() und QImageWriter::setTransformation().
Dokumentation der Mitgliedsfunktionen
QImageIOHandler::QImageIOHandler()
Erstellt ein QImageIOHandler-Objekt.
[virtual noexcept] QImageIOHandler::~QImageIOHandler()
Löst das Objekt „ QImageIOHandler “ auf.
[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 Speicherzuweisung das aktuelle Zuweisungslimit überschreiten würde. Diese Funktion überprüft die Parameter und das Limit und führt die Speicherzuweisung durch, sofern diese gültig und erforderlich ist. Bei erfolgreicher Rückgabe ist ` image ` ein gültiges, losgelöstes ` QImage ` der angegebenen ` size ` und ` format`.
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 ist lesbar und die anfänglichen Header-Informationen deuten darauf hin, dass das Bild gelesen werden kann); andernfalls wird ` false` zurückgegeben.
Achten Sie bei der Neuimplementierung von `canRead()` darauf, 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 Animationen unterstützen, gibt diese Funktion die Sequenznummer des aktuellen Bildes in der Animation zurück. Wird diese Funktion aufgerufen, bevor ein Bild mit ` read()` geladen wurde, wird -1 zurückgegeben. Die Nummer des ersten Bildes in der Sequenz ist 0.
Wenn das Bildformat keine Animationen unterstützt, wird 0 zurückgegeben.
Siehe auch ` read()`.
[virtual] QRect QImageIOHandler::currentImageRect() const
Gibt den Bildausschnitt des aktuellen Bildes zurück. Ist für das Bild kein Bildausschnitt definiert, 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. Wenn kein Format zugewiesen wurde, wird eine leere Zeichenkette zurückgegeben.
Siehe auch „ setFormat()“.
[virtual] int QImageIOHandler::imageCount() const
Bei Bildformaten, die Animationen unterstützen, gibt diese Funktion die Anzahl der Bilder in der Animation zurück. Wenn das Bildformat keine Animationen unterstützt oder die Anzahl der Bilder nicht ermittelt werden kann, wird 0 zurückgegeben.
Die Standardimplementierung gibt 1 zurück, wenn „ canRead()“ den Wert „ true “ zurückgibt; andernfalls wird 0 zurückgegeben.
[virtual] bool QImageIOHandler::jumpToImage(int imageNumber)
Bei Bildformaten, die Animationen unterstützen, springt diese Funktion zu dem Bild, dessen Sequenznummer imageNumber lautet. Der nächste Aufruf von read() versucht, dieses Bild zu lesen.
Die Standardimplementierung führt keine Aktion aus und gibt false zurück.
[virtual] bool QImageIOHandler::jumpToNextImage()
Bei Bildformaten, die Animationen unterstützen, springt diese Funktion zum nächsten Bild.
Die Standardimplementierung führt keine Aktion aus und gibt „ false “ zurück.
[virtual] int QImageIOHandler::loopCount() const
Bei Bildformaten, die Animationen unterstützen, gibt diese Funktion die Anzahl der Wiederholungen der Animation zurück. Wenn das Bildformat keine Animationen unterstützt, wird 0 zurückgegeben.
[virtual] int QImageIOHandler::nextImageDelay() const
Bei Bildformaten, die Animationen unterstützen, gibt diese Funktion die Anzahl der Millisekunden zurück, die bis zum Einlesen des nächsten Bildes gewartet werden soll. Wenn das Bildformat keine Animationen unterstützt, wird 0 zurückgegeben.
[virtual] QVariant QImageIOHandler::option(QImageIOHandler::ImageOption option) const
Gibt den Wert zurück, der „ option “ zugewiesen wurde, als „ QVariant “. Der Typ des Werts hängt von der Option ab. Beispielsweise gibt „option(Size)“ eine „ QSize “-Variante zurück.
Siehe auch „ setOption()“ und „ supportsOption()“.
[pure virtual] bool QImageIOHandler::read(QImage *image)
Liest ein Bild vom Gerät ein und speichert es unter image. Gibt true zurück, wenn das Bild erfolgreich eingelesen wurde; andernfalls wird false zurückgegeben.
Bei Bildformaten, die inkrementelles Laden unterstützen, sowie bei Animationsformaten kann der Bild-Handler davon ausgehen, dass ` image ` auf das vorherige Bild verweist.
Siehe auch ` canRead()`.
void QImageIOHandler::setDevice(QIODevice *device)
Legt das Gerät des „ QImageIOHandler “ auf „ device “ fest. Der Bild-Handler verwendet dieses Gerät beim Lesen und Schreiben von Bildern.
Das Gerät kann nur einmal festgelegt werden und muss vor dem Aufruf von ` canRead()`, ` read()`, ` write()` usw. festgelegt werden. Wenn Sie mehrere Dateien lesen müssen, erstellen Sie mehrere Instanzen der entsprechenden Unterklasse von ` QImageIOHandler `.
Siehe auch device().
void QImageIOHandler::setFormat(const QByteArray &format)
Legt das Format von „ QImageIOHandler “ auf „ format “ fest. Dieses Format eignet sich besonders für Handler, die mehrere Bildformate unterstützen.
Siehe auch format().
void QImageIOHandler::setFormat(const QByteArray &format) const
Legt das Format von ` QImageIOHandler ` auf ` format` fest. Dieses 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 die Option „ QImageIOHandler “ die Option „ option “ unterstützt; andernfalls wird „ false “ zurückgegeben. Wenn beispielsweise die Option „ QImageIOHandler “ die Option „ Size “ unterstützt, muss „supportsOption(Size)“ den Wert „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 wird „ false “ zurückgegeben.
Die Standardimplementierung führt keine Aktion aus und gibt einfach „ false “ zurück.
© 2026 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.