Auf dieser Seite

QImageWriter Class

Die Klasse „QImageWriter“ bietet eine formatunabhängige Schnittstelle zum Speichern von Bildern in Dateien oder auf anderen Geräten. Mehr...

Header: #include <QImageWriter>
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 ImageWriterError { DeviceError, UnsupportedFormatError, InvalidImageError, UnknownError }

Öffentliche Funktionen

QImageWriter()
QImageWriter(QIODevice *device, const QByteArray &format)
QImageWriter(const QString &fileName, const QByteArray &format = QByteArray())
~QImageWriter()
bool canWrite() const
int compression() const
QIODevice *device() const
QImageWriter::ImageWriterError error() const
QString errorString() const
QString fileName() const
QByteArray format() const
bool optimizedWrite() const
bool progressiveScanWrite() const
int quality() const
void setCompression(int compression)
void setDevice(QIODevice *device)
void setFileName(const QString &fileName)
void setFormat(const QByteArray &format)
void setOptimizedWrite(bool optimize)
void setProgressiveScanWrite(bool progressive)
void setQuality(int quality)
void setSubType(const QByteArray &type)
void setText(const QString &key, const QString &text)
void setTransformation(QImageIOHandler::Transformations transform)
QByteArray subType() const
QList<QByteArray> supportedSubTypes() const
bool supportsOption(QImageIOHandler::ImageOption option) const
QImageIOHandler::Transformations transformation() const
bool write(const QImage &image)

Statische öffentliche Mitglieder

QList<QByteArray> imageFormatsForMimeType(const QByteArray &mimeType)
QList<QByteArray> supportedImageFormats()
QList<QByteArray> supportedMimeTypes()

Ausführliche Beschreibung

QImageWriter unterstützt die Einstellung formatspezifischer Optionen wie Komprimierungsstufe und Qualität vor dem Speichern des Bildes. Wenn Sie solche Optionen nicht benötigen, können Sie stattdessen QImage::save() oder QPixmap::save() verwenden.

Um ein Bild zu speichern, erstellen Sie zunächst ein QImageWriter-Objekt. Übergeben Sie dem Konstruktor von QImageWriter entweder einen Dateinamen oder einen Gerätezeiger sowie das Bildformat. Anschließend können Sie verschiedene Optionen festlegen, beispielsweise die Qualität (durch Aufruf von ` setQuality()`). ` canWrite()` gibt ` true ` zurück, wenn `QImageWriter` das Bild schreiben kann (d. h., das Bildformat wird unterstützt und das Gerät ist zum Schreiben geöffnet). Rufen Sie ` write()` auf, um das Bild auf das Gerät zu schreiben.

Tritt beim Schreiben des Bildes ein Fehler auf, gibt ` write()` den Wert `false` zurück. Sie können dann ` error()` aufrufen, um die Art des aufgetretenen Fehlers zu ermitteln, oder ` errorString()`, um eine für Menschen lesbare Beschreibung des Fehlers zu erhalten.

Rufen Sie ` supportedImageFormats()` auf, um eine Liste der Formate zu erhalten, die QImageWriter schreiben kann. QImageWriter unterstützt alle integrierten Bildformate sowie alle Bildformat-Plugins, die das Schreiben unterstützen.

Hinweis: QImageWriter übernimmt die exklusive Kontrolle über die zugewiesene Datei oder das zugewiesene Gerät. Jeder Versuch, die zugewiesene Datei oder das zugewiesene Gerät während der Lebensdauer des QImageWriter-Objekts zu ändern, führt zu undefinierten Ergebnissen. Wenn ein sofortiger Zugriff auf eine Ressource gewünscht ist, wird die Verwendung eines Scopes empfohlen.

Beispiel:

QString imagePath(QStringLiteral("path/image.jpeg"));
QImage image(64, 64, QImage::Format_RGB32);
image.fill(Qt::red);
{
    QImageWriter writer(imagePath);
    writer.write(image);
}

QFile::rename(imagePath,
              QStringLiteral("path/other_image.jpeg"));

Siehe auch QImageReader, QImageIOHandler, QImageIOPlugin und QColorSpace.

Dokumentation zu Mitgliedstypen

enum QImageWriter::ImageWriterError

Diese Enumeration beschreibt Fehler, die beim Schreiben von Bildern mit QImageWriter auftreten können.

KonstanteWertBeschreibung
QImageWriter::DeviceError1QImageWriter Beim Schreiben der Bilddaten ist ein Gerätefehler aufgetreten. Weitere Informationen zum Fehler finden Sie in der Dokumentation Ihres Geräts.
QImageWriter::UnsupportedFormatError2Qt unterstützt das angeforderte Bildformat nicht.
QImageWriter::InvalidImageError3Es wurde versucht, ein ungültiges ` QImage` zu schreiben. Ein Beispiel für ein ungültiges Bild wäre ein Null- QImage.
QImageWriter::UnknownError0Es ist ein unbekannter Fehler aufgetreten. Wenn Sie diesen Wert nach dem Aufruf von ` write()` erhalten, wird dies höchstwahrscheinlich durch einen Fehler in ` QImageWriter` verursacht.

Dokumentation der Member-Funktionen

QImageWriter::QImageWriter()

Erstellt ein leeres QImageWriter-Objekt. Vor dem Schreiben müssen Sie die Funktion „ setFormat()“ aufrufen, um ein Bildformat festzulegen, und anschließend entweder „ setDevice()“ oder „ setFileName()“.

[explicit] QImageWriter::QImageWriter(QIODevice *device, const QByteArray &format)

Erstellt ein QImageWriter-Objekt unter Verwendung der Geräte device s und des Bildformats format.

[explicit] QImageWriter::QImageWriter(const QString &fileName, const QByteArray &format = QByteArray())

Erstellt ein QImageWriter-Objekt, das in eine Datei mit dem Namen „ fileName “ schreibt und dabei das Bildformat „ format “ verwendet. Wird „ format “ nicht angegeben, ermittelt QImageWriter das Bildformat anhand der Dateiendung von „ fileName “.

[noexcept] QImageWriter::~QImageWriter()

Löst das Objekt „ QImageWriter “ auf.

bool QImageWriter::canWrite() const

Gibt „ true “ zurück, wenn „ QImageWriter “ das Bild schreiben kann; d. h., das Bildformat wird unterstützt und das zugewiesene Gerät ist zum Lesen geöffnet.

Siehe auch write(), setDevice() und setFormat().

int QImageWriter::compression() const

Gibt den Komprimierungsgrad des Bildes zurück.

Siehe auch „ setCompression()“.

QIODevice *QImageWriter::device() const

Gibt das Gerät zurück, das derzeit „ QImageWriter “ zugewiesen ist, oder „ nullptr “, falls kein Gerät zugewiesen wurde.

Siehe auch setDevice().

QImageWriter::ImageWriterError QImageWriter::error() const

Gibt den Typ des zuletzt aufgetretenen Fehlers zurück.

Siehe auch „ ImageWriterError “ und „ errorString()“.

QString QImageWriter::errorString() const

Gibt eine für Menschen lesbare Beschreibung des zuletzt aufgetretenen Fehlers zurück.

Siehe auch ` error()`.

QString QImageWriter::fileName() const

Wenn das aktuell zugewiesene Gerät eine Datei ist oder wenn setFileName() aufgerufen wurde, gibt diese Funktion den Namen der Datei zurück, in die QImageWriter schreibt. Andernfalls (d. h., wenn kein Gerät zugewiesen wurde oder das Gerät keine Datei ist), wird ein leeres QString zurückgegeben.

Siehe auch setFileName() und setDevice().

QByteArray QImageWriter::format() const

Gibt das Format zurück, das „ QImageWriter “ zum Speichern von Bildern verwendet.

Siehe auch setFormat().

[static] QList<QByteArray> QImageWriter::imageFormatsForMimeType(const QByteArray &mimeType)

Gibt die Liste der Bildformate zurück, die mimeType entsprechen.

Beachten Sie, dass die Instanz von ` QGuiApplication ` erstellt werden muss, bevor diese Funktion aufgerufen wird.

Siehe auch supportedImageFormats() und supportedMimeTypes().

bool QImageWriter::optimizedWrite() const

Gibt zurück, ob die Optimierung für das Schreiben des Bildes aktiviert wurde.

Siehe auch ` setOptimizedWrite()`.

bool QImageWriter::progressiveScanWrite() const

Gibt zurück, ob das Bild als progressives Bild geschrieben werden soll.

Siehe auch „ setProgressiveScanWrite()“.

int QImageWriter::quality() const

Gibt die Qualitätseinstellung des Bildformats zurück.

Siehe auch setQuality().

void QImageWriter::setCompression(int compression)

Dies ist eine bildformatspezifische Funktion, mit der die Komprimierung eines Bildes festgelegt wird. Bei Bildformaten, die keine Einstellung der Komprimierung unterstützen, wird dieser Wert ignoriert.

Der Wertebereich von ` compression ` hängt vom Bildformat ab:

BildformatUnterstützte Werte
PNGWerte im Bereich von 0 (keine Komprimierung) bis 100 (geringe Bildqualität, maximale Komprimierung). Dieser Wert ist der Kehrwert der Qualität in „ setQuality “. Die beiden Optionen schließen sich gegenseitig aus.
TGA0 – Keine Komprimierung
1 – RLE-Komprimierung
TIFF0 – Keine Komprimierung
1 – LZW-Komprimierung
2 – RLE-Komprimierung
3 – CCITT-Gruppe-3-Faxkodierung
4 – CCITT-Gruppe-4-Faxkodierung
5 – JPEG-Komprimierung

Siehe auch compression() und setQuality().

void QImageWriter::setDevice(QIODevice *device)

Setzt das Gerät von „ QImageWriter “ auf „ device “. Wenn bereits ein Gerät festgelegt wurde, wird das alte Gerät aus „ QImageWriter “ entfernt und ansonsten unverändert belassen.

Ist das Gerät noch nicht geöffnet, versucht ` QImageWriter `, das Gerät im Modus ` QIODeviceBase::WriteOnly ` durch Aufruf von `open()` zu öffnen. Beachten Sie, dass dies bei bestimmten Geräten wie ` QProcess`, ` QTcpSocket ` und ` QUdpSocket` nicht funktioniert, da dort zum Öffnen des Geräts zusätzliche Logik erforderlich ist.

Siehe auch device() und setFileName().

void QImageWriter::setFileName(const QString &fileName)

Legt den Dateinamen von „ QImageWriter “ auf „ fileName “ fest. Intern erstellt „ QImageWriter “ eine Datei namens „ QFile “, öffnet diese im Modus „ QIODevice::WriteOnly “ und verwendet diese Datei beim Schreiben von Bildern.

Siehe auch fileName() und setDevice().

void QImageWriter::setFormat(const QByteArray &format)

Legt das Format fest, das QImageWriter beim Schreiben von Bildern verwendet, auf format. format ist eine Textzeichenfolge, bei der Groß- und Kleinschreibung keine Rolle spielt. Beispiel:

QImageWriter writer;
writer.setFormat("png"); // same as writer.setFormat("PNG");

Sie können ` supportedImageFormats()` aufrufen, um eine vollständige Liste der von ` QImageWriter ` unterstützten Formate zu erhalten.

Siehe auch format().

void QImageWriter::setOptimizedWrite(bool optimize)

Dies ist eine bildformatspezifische Funktion, die beim Schreiben von Bildern die Flags „ optimize “ setzt. Bei Bildformaten, die das Setzen des Flags „ optimize “ nicht unterstützen, wird dieser Wert ignoriert.

Der Standardwert ist „false“.

Siehe auch optimizedWrite().

void QImageWriter::setProgressiveScanWrite(bool progressive)

Dies ist eine bildformatspezifische Funktion, die beim Schreiben von Bildern das „ progressive “-Scannen aktiviert. Bei Bildformaten, die die Einstellung eines „ progressive “-Scan-Flags nicht unterstützen, wird dieser Wert ignoriert.

Der Standardwert ist „false“.

Siehe auch „ progressiveScanWrite()“.

void QImageWriter::setQuality(int quality)

Legt die Qualitätseinstellung des Bildformats auf „ quality “ fest.

Bei einigen Bildformaten, insbesondere bei verlustbehafteten, besteht ein Kompromiss zwischen a) der visuellen Qualität des resultierenden Bildes und b) der Ausführungszeit der Kodierung sowie dem Komprimierungsgrad. Diese Funktion legt den Grad dieses Kompromisses für Bildformate fest, die dies unterstützen. Bei anderen Formaten wird dieser Wert ignoriert.

Der Wertebereich von ` quality ` hängt vom Bildformat ab. Das „jpeg“-Format unterstützt beispielsweise einen Qualitätsbereich von 0 (geringe visuelle Qualität, hohe Komprimierung) bis 100 (hohe visuelle Qualität, geringe Komprimierung).

Siehe auch quality().

void QImageWriter::setSubType(const QByteArray &type)

Dies ist eine bildformatspezifische Funktion, die den Subtyp des Bildes auf „ type “ setzt. Der Subtyp kann von einem Handler verwendet werden, um zu bestimmen, welches Format beim Speichern des Bildes verwendet werden soll.

Beispiel für das Speichern eines Bildes im DDS-Format mit dem Subtyp „A8R8G8R8“:

QImageWriter writer("some/image.dds");
if (writer.supportsOption(QImageIOHandler::SubType))
    writer.setSubType("A8R8G8B8");
writer.write(image);

Siehe auch „ subType()“.

void QImageWriter::setText(const QString &key, const QString &text)

Setzt den mit dem Schlüssel „ key “ verknüpften Bildtext auf „ text “. Dies ist nützlich, um Copyright-Informationen oder andere Angaben zum Bild zu speichern. Beispiel:

QImage image("some/image.jpeg");
QImageWriter writer("images/outimage.png", "png");
writer.setText("Author", "John Smith");
writer.write(image);

Wenn Sie einen einzelnen Datenblock (z. B. einen Kommentar) speichern möchten, können Sie einen leeren Schlüssel übergeben oder einen generischen Schlüssel wie „Description“ verwenden.

Der Schlüssel und der Text werden nach dem Aufruf von ` write()` in die Bilddaten eingebettet.

Die Unterstützung für diese Option wird über ` QImageIOHandler::Description` implementiert.

Siehe auch QImage::setText() und QImageReader::text().

void QImageWriter::setTransformation(QImageIOHandler::Transformations transform)

Legt die Metadaten zu den Bildtransformationen, einschließlich der Ausrichtung, auf „ transform “ fest.

Wenn Metadaten zur Bildtransformation vom Bildformat nicht unterstützt werden, wird die Transformation vor dem Speichern angewendet.

Siehe auch transformation() und write().

QByteArray QImageWriter::subType() const

Gibt den Subtyp des Bildes zurück.

Siehe auch „ setSubType()“.

[static] QList<QByteArray> QImageWriter::supportedImageFormats()

Gibt die Liste der von QImageWriter unterstützten Bildformate zurück.

Standardmäßig kann Qt die folgenden Formate schreiben:

FormatMIME-TypBeschreibung
BMPimage/bmpWindows-Bitmap
JPGimage/jpegJoint Photographic Experts Group
PNGimage/pngPortable Network Graphics
PBMimage/x-portable-bitmapPortable Bitmap
PGMimage/x-portable-graymapPortable Graymap
PPMimage/x-portable-pixmapPortable Pixmap
XBMimage/x-xbitmapX11-Bitmap
XPMimage/x-xpixmapX11-Pixmap

Das Lesen und Schreiben von SVG-Dateien wird über das Qt SVG Modul. Das Qt Image Formats Modul bietet Unterstützung für weitere Bildformate.

Beachten Sie, dass die Instanz ` QApplication ` erstellt werden muss, bevor diese Funktion aufgerufen wird.

Siehe auch setFormat(), QImageReader::supportedImageFormats() und QImageIOPlugin.

[static] QList<QByteArray> QImageWriter::supportedMimeTypes()

Gibt die Liste der von QImageWriter unterstützten MIME-Typen zurück.

Beachten Sie, dass die Instanz von ` QApplication ` erstellt sein muss, bevor diese Funktion aufgerufen wird.

Siehe auch supportedImageFormats() und QImageReader::supportedMimeTypes().

QList<QByteArray> QImageWriter::supportedSubTypes() const

Gibt die Liste der von einem Bild unterstützten Untertypen zurück.

bool QImageWriter::supportsOption(QImageIOHandler::ImageOption option) const

Gibt „ true “ zurück, wenn der Writer „ option “ unterstützt; andernfalls wird „false“ zurückgegeben.

Verschiedene Bildformate unterstützen unterschiedliche Optionen. Rufen Sie diese Funktion auf, um festzustellen, ob eine bestimmte Option vom aktuellen Format unterstützt wird. Das PNG-Format ermöglicht es beispielsweise, Text in die Metadaten des Bildes einzubetten (siehe text()).

QImageWriter writer(fileName);
if (writer.supportsOption(QImageIOHandler::Description))
    writer.setText("Author", "John Smith");

Optionen können geprüft werden, nachdem der Writer einem Format zugeordnet wurde.

Siehe auch ` QImageReader::supportsOption()` und ` setFormat()`.

QImageIOHandler::Transformations QImageWriter::transformation() const

Gibt die Transformation und die Ausrichtung zurück, mit denen das Bild erstellt wurde.

Siehe auch ` setTransformation()`.

bool QImageWriter::write(const QImage &image)

Schreibt das Bild „ image “ auf das zugewiesene Gerät oder in die angegebene Datei. Gibt bei Erfolg „ true “ zurück; andernfalls „ false “. Wenn der Vorgang fehlschlägt, können Sie „ error()“ aufrufen, um die Art des aufgetretenen Fehlers zu ermitteln, oder „ errorString()“, um eine für Menschen lesbare Beschreibung des Fehlers zu erhalten.

Siehe auch canWrite(), error() und errorString().

© 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.