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 |
- Liste aller Mitglieder, einschließlich geerbter Mitglieder
- QImageWriter ist Teil von Painting Classes.
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.
Konstante | Wert | Beschreibung |
---|---|---|
QImageWriter::DeviceError | 1 | QImageWriter 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::UnsupportedFormatError | 2 | Qt unterstützt das angeforderte Bildformat nicht. |
QImageWriter::InvalidImageError | 3 | Es wurde versucht, ein ungültiges QImage zu schreiben. Ein Beispiel für ein ungültiges Bild wäre eine Null QImage. |
QImageWriter::UnknownError | 0 | Ein 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:
Format | MIME-Typ | Beschreibung |
---|---|---|
BMP | bild/bmp | Windows-Bitmap |
JPG | bild/jpeg | Gemeinsame Expertengruppe für Fotografie |
PNG | bild/png | Portable Netzwerkgrafik |
PBM | bild/x-portable-bitmap | Tragbares Bitmap |
PGM | bild/x-tragbare-graukarte | Portable Graymap |
PPM | bild/x-tragbare-pixkarte | Portable Pixmap |
XBM | bild/x-xbitmap | X11-Bitmap |
XPM | bild/x-xpixmap | X11 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.