QImageWriter Class

Die Klasse QImageWriter bietet eine formatunabhängige Schnittstelle zum Schreiben von Bildern in Dateien oder andere Geräte. Mehr...

Kopfzeile: #include <QImageWriter>
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 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()

Detaillierte Beschreibung

QImageWriter unterstützt das Setzen von formatspezifischen Optionen, wie z.B. Kompressionsgrad 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, konstruieren Sie zunächst ein QImageWriter-Objekt. Übergeben Sie entweder einen Dateinamen oder einen Gerätezeiger und das Bildformat an den Konstruktor von QImageWriter. Anschließend können Sie verschiedene Optionen einstellen, wie z. B. 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.

Wenn beim Schreiben des Bildes ein Fehler auftritt, gibt write() false zurück. Sie können dann error() aufrufen, um die Art des aufgetretenen Fehlers zu ermitteln, oder errorString(), um eine von 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 eingebauten Bildformate, zusätzlich zu allen Bildformat-Plugins, die das Schreiben unterstützen.

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

Ein 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 der Mitgliedstypen

enum QImageWriter::ImageWriterError

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

KonstanteWertBeschreibung
QImageWriter::DeviceError1QImageWriter Beim Schreiben der Bilddaten ist ein Gerätefehler aufgetreten. Wenden Sie sich an Ihr Gerät, um weitere Details über den Fehler zu erfahren.
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 eine Null QImage.
QImageWriter::UnknownError0Ein unbekannter Fehler ist aufgetreten. Wenn Sie diesen Wert nach dem Aufruf von write() erhalten, ist dies höchstwahrscheinlich auf einen Fehler in QImageWriter zurückzuführen.

Dokumentation der Mitgliedsfunktionen

QImageWriter::QImageWriter()

Konstruiert ein leeres QImageWriter-Objekt. Vor dem Schreiben müssen Sie setFormat() aufrufen, um ein Bildformat festzulegen, dann setDevice() oder setFileName().

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

Konstruiert ein QImageWriter-Objekt unter Verwendung des Geräts device und des Bildformats format.

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

Konstruiert ein QImageWriter-Objekt, das in eine Datei mit dem Namen fileName schreibt, wobei das Bildformat format verwendet wird. Wenn format nicht angegeben wird, erkennt QImageWriter das Bildformat anhand der Erweiterung von fileName.

[noexcept] QImageWriter::~QImageWriter()

Zerstört das Objekt QImageWriter.

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 die Komprimierung des Bildes zurück.

Siehe auch setCompression().

QIODevice *QImageWriter::device() const

Gibt das Gerät zurück, das derzeit QImageWriter zugewiesen ist, oder nullptr, wenn 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 menschenlesbare Beschreibung des letzten 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 Schreiben 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 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 eingeschaltet 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, die die Komprimierung eines Bildes festlegt. Bei Bildformaten, die die Einstellung der Komprimierung nicht unterstützen, wird dieser Wert ignoriert.

Der Wertebereich von compression hängt vom jeweiligen Bildformat ab. Das "tiff"-Format unterstützt zum Beispiel zwei Werte, 0 (keine Kompression) und 1 (LZW-Kompression).

Siehe auch compression().

void QImageWriter::setDevice(QIODevice *device)

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

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

Siehe auch device() und setFileName().

void QImageWriter::setFileName(const QString &fileName)

Setzt den Dateinamen von QImageWriter auf fileName. Intern erstellt QImageWriter eine Datei 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, das QImageWriter beim Schreiben von Bildern verwendet, auf format fest. format ist eine von der Groß- und Kleinschreibung unabhängige Textzeichenfolge. Beispiel:

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

Sie können supportedImageFormats() aufrufen, um die vollständige Liste der Formate zu erhalten, die QImageWriter unterstützt.

Siehe auch format().

void QImageWriter::setOptimizedWrite(bool optimize)

Dies ist eine bildformatspezifische Funktion, die die optimize -Flags beim Schreiben von Bildern setzt. Bei Bildformaten, die das Setzen eines optimize -Flags 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 das Scannen von progressive beim Schreiben von Bildern aktiviert. Bei Bildformaten, die das Setzen eines progressive Scan-Flags nicht unterstützen, wird dieser Wert ignoriert.

Der Standardwert ist false.

Siehe auch progressiveScanWrite().

void QImageWriter::setQuality(int quality)

Setzt die Qualitätseinstellung des Bildformats auf quality.

Einige Bildformate, insbesondere verlustbehaftete Formate, bringen einen Kompromiss zwischen a) der visuellen Qualität des resultierenden Bildes und b) der Kodierungsausführungszeit und dem Komprimierungsgrad mit sich. Diese Funktion legt den Grad dieses Kompromisses für Bildformate fest, die ihn unterstützen. Für andere Formate wird dieser Wert ignoriert.

Der Wertebereich von quality hängt vom Bildformat ab. Das "jpeg"-Format unterstützt beispielsweise einen Qualitätsbereich von 0 (niedrige visuelle Qualität, hohe Kompression) bis 100 (hohe visuelle Qualität, niedrige Kompression).

Siehe auch quality().

void QImageWriter::setSubType(const QByteArray &type)

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

Beispiel: 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 Bildtext, der mit dem Schlüssel key verknüpft ist, auf text. Dies ist nützlich, um Copyright-Informationen oder andere Informationen über das 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 "Beschreibung" 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 durch QImageIOHandler::Description implementiert.

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

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

Setzt die Metadaten für die Bildtransformation einschließlich der Ausrichtung auf transform.

Wenn Transformations-Metadaten vom Bildformat nicht unterstützt werden, wird die Transformation vor dem Schreiben 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
BMPbild/bmpWindows-Bitmap
JPGbild/jpegGemeinsame Expertengruppe für Fotografie
PNGbild/pngPortable Netzwerkgrafik
PBMbild/x-portable-bitmapTragbares Bitmap
PGMbild/x-tragbare-graukartePortable Graymap
PPMbild/x-tragbare-pixkartePortable Pixmap
XBMbild/x-xbitmapX11-Bitmap
XPMbild/x-xpixmapX11 Pixmap

Das Lesen und Schreiben von SVG-Dateien wird durch das Qt SVG Modul unterstützt. Das Modul 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 QApplication erstellt werden 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 Subtypen 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 verschiedene Optionen. Rufen Sie diese Funktion auf, um festzustellen, ob eine bestimmte Option vom aktuellen Format unterstützt wird. Das PNG-Format erlaubt es zum Beispiel, 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 getestet werden, nachdem der Writer mit einem Format verknüpft wurde.

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

QImageIOHandler::Transformations QImageWriter::transformation() const

Gibt die Transformation und Ausrichtung zurück, mit der das Bild geschrieben wurde.

Siehe auch setTransformation().

bool QImageWriter::write(const QImage &image)

Schreibt das Bild image auf das zugewiesene Gerät oder den Dateinamen. 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 von Menschen lesbare Beschreibung des Fehlers zu erhalten.

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

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