QImageWriter Class
La classe QImageWriter fournit une interface indépendante du format pour l'écriture d'images dans des fichiers ou sur d'autres périphériques. Plus d'informations...
| En-tête : | #include <QImageWriter> |
| CMake : | find_package(Qt6 REQUIRED COMPONENTS Gui)target_link_libraries(mytarget PRIVATE Qt6::Gui) |
| qmake : | QT += gui |
- Liste de tous les membres, y compris les membres hérités
- QImageWriter fait partie des classes de peinture.
Remarque : toutes les fonctions de cette classe sont réentrantes.
Types publics
| enum | ImageWriterError { DeviceError, UnsupportedFormatError, InvalidImageError, UnknownError } |
Fonctions publiques
| 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) |
Membres publics statiques
| QList<QByteArray> | imageFormatsForMimeType(const QByteArray &mimeType) |
| QList<QByteArray> | supportedImageFormats() |
| QList<QByteArray> | supportedMimeTypes() |
Description détaillée
QImageWriter permet de définir des options spécifiques au format, telles que le niveau de compression et la qualité, avant de stocker l'image. Si vous n'avez pas besoin de ces options, vous pouvez utiliser QImage::save() ou QPixmap::save() à la place.
Pour stocker une image, vous commencez par construire un objet QImageWriter. Passez un nom de fichier ou un pointeur de périphérique, ainsi que le format de l'image au constructeur de QImageWriter. Vous pouvez ensuite définir plusieurs options, telles que la qualité (en appelant setQuality()). canWrite() renvoie true si QImageWriter peut écrire l'image (c'est-à-dire que le format d'image est pris en charge et que le périphérique est ouvert à l'écriture). Appelez write() pour écrire l'image sur le périphérique.
Si une erreur survient lors de l'écriture de l'image, write() renvoie un message faux. Vous pouvez alors appeler error() pour connaître le type d'erreur qui s'est produite, ou errorString() pour obtenir une description lisible par l'homme de ce qui s'est passé.
Appelez supportedImageFormats() pour obtenir la liste des formats que QImageWriter peut écrire. QImageWriter prend en charge tous les formats d'image intégrés, en plus de tous les plugins de format d'image qui prennent en charge l'écriture.
Remarque : QImageWriter assume le contrôle exclusif du fichier ou du périphérique qui lui est attribué. Toute tentative de modification du fichier ou du périphérique attribué pendant la durée de vie de l'objet QImageWriter produira des résultats indéfinis. Si un accès immédiat à une ressource est souhaité, l'utilisation d'un champ d'application est la méthode recommandée.
Par exemple, l'utilisation d'un champ d'application :
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"));
Voir aussi QImageReader, QImageIOHandler, QImageIOPlugin, et QColorSpace.
Documentation sur les types de membres
enum QImageWriter::ImageWriterError
Cette liste décrit les erreurs qui peuvent se produire lors de l'écriture d'images avec QImageWriter.
| Constante | Valeur | Description de l'erreur |
|---|---|---|
QImageWriter::DeviceError | 1 | QImageWriter a rencontré une erreur de périphérique lors de l'écriture des données d'image. Consultez votre périphérique pour plus de détails sur ce qui s'est passé. |
QImageWriter::UnsupportedFormatError | 2 | Qt Image Formats ne supporte pas le format d'image demandé. |
QImageWriter::InvalidImageError | 3 | Une tentative a été faite pour écrire une image invalide QImage. Un exemple d'image invalide serait une image nulle QImage. |
QImageWriter::UnknownError | 0 | Une erreur inconnue s'est produite. Si vous obtenez cette valeur après avoir appelé write(), cela est probablement dû à un bogue dans QImageWriter. |
Documentation sur les fonctions membres
QImageWriter::QImageWriter()
Construit un objet QImageWriter vide. Avant d'écrire, vous devez appeler setFormat() pour définir un format d'image, puis setDevice() ou setFileName().
[explicit] QImageWriter::QImageWriter(QIODevice *device, const QByteArray &format)
Construit un objet QImageWriter en utilisant le périphérique device et le format d'image format.
[explicit] QImageWriter::QImageWriter(const QString &fileName, const QByteArray &format = QByteArray())
Construit un objet QImageWriter qui écrira dans un fichier portant le nom fileName, en utilisant le format d'image format. Si format n'est pas fourni, QImageWriter détectera le format d'image en inspectant l'extension de fileName.
[noexcept] QImageWriter::~QImageWriter()
Détruit l'objet QImageWriter.
bool QImageWriter::canWrite() const
Renvoie true si QImageWriter peut écrire l'image, c'est-à-dire que le format d'image est pris en charge et que le périphérique affecté est ouvert à la lecture.
Voir aussi write(), setDevice() et setFormat().
int QImageWriter::compression() const
Renvoie la compression de l'image.
Voir aussi setCompression().
QIODevice *QImageWriter::device() const
Renvoie le périphérique actuellement attribué à QImageWriter, ou nullptr si aucun périphérique n'a été attribué.
Voir aussi setDevice().
QImageWriter::ImageWriterError QImageWriter::error() const
Renvoie le type d'erreur qui s'est produite en dernier.
Voir aussi ImageWriterError et errorString().
QString QImageWriter::errorString() const
Renvoie une description lisible par l'homme de la dernière erreur survenue.
Voir aussi error().
QString QImageWriter::fileName() const
Si le périphérique actuellement assigné est un fichier, ou si setFileName() a été appelé, cette fonction renvoie le nom du fichier dans lequel QImageWriter écrit. Dans le cas contraire (c'est-à-dire si aucun périphérique n'a été assigné ou si le périphérique n'est pas un fichier), un QString vide est renvoyé.
Voir aussi setFileName() et setDevice().
QByteArray QImageWriter::format() const
Renvoie le format utilisé par QImageWriter pour l'écriture des images.
Voir aussi setFormat().
[static] QList<QByteArray> QImageWriter::imageFormatsForMimeType(const QByteArray &mimeType)
Renvoie la liste des formats d'image correspondant à mimeType.
Notez que l'instance QGuiApplication doit être créée avant que cette fonction ne soit appelée.
Voir aussi supportedImageFormats() et supportedMimeTypes().
bool QImageWriter::optimizedWrite() const
Retourne si l'optimisation a été activée pour l'écriture de l'image.
Voir aussi setOptimizedWrite().
bool QImageWriter::progressiveScanWrite() const
Indique si l'image doit être écrite en tant qu'image progressive.
Voir également setProgressiveScanWrite().
int QImageWriter::quality() const
Renvoie le paramètre de qualité du format d'image.
Voir aussi setQuality().
void QImageWriter::setCompression(int compression)
Il s'agit d'une fonction spécifique au format d'image qui définit la compression d'une image. Pour les formats d'image qui ne permettent pas de définir la compression, cette valeur est ignorée.
La plage de valeurs de compression dépend du format d'image. Par exemple, le format "tiff" prend en charge deux valeurs, 0 (aucune compression) et 1 (compression LZW).
Voir aussi compression().
void QImageWriter::setDevice(QIODevice *device)
Définit le périphérique de QImageWriter à device. Si un périphérique a déjà été défini, l'ancien périphérique est supprimé de QImageWriter et est sinon laissé inchangé.
Si le périphérique n'est pas déjà ouvert, QImageWriter tentera d'ouvrir le périphérique en mode QIODeviceBase::WriteOnly en appelant open(). Notez que cela ne fonctionne pas pour certains dispositifs, tels que QProcess, QTcpSocket et QUdpSocket, où plus de logique est nécessaire pour ouvrir le dispositif.
Voir aussi device() et setFileName().
void QImageWriter::setFileName(const QString &fileName)
Définit le nom de fichier de QImageWriter en fileName. En interne, QImageWriter créera un QFile et l'ouvrira en mode QIODevice::WriteOnly, et utilisera ce fichier lors de l'écriture d'images.
Voir aussi fileName() et setDevice().
void QImageWriter::setFormat(const QByteArray &format)
Définit le format que QImageWriter utilisera lors de l'écriture d'images, à format. format est une chaîne de texte insensible à la casse. Exemple :
QImageWriter writer; writer.setFormat("png"); // same as writer.setFormat("PNG");
Vous pouvez appeler supportedImageFormats() pour obtenir la liste complète des formats pris en charge par QImageWriter.
Voir aussi format().
void QImageWriter::setOptimizedWrite(bool optimize)
Il s'agit d'une fonction spécifique au format d'image qui définit les drapeaux optimize lors de l'écriture des images. Pour les formats d'image qui ne prennent pas en charge la définition d'un drapeau optimize, cette valeur est ignorée.
La valeur par défaut est false.
Voir aussi optimizedWrite().
void QImageWriter::setProgressiveScanWrite(bool progressive)
Il s'agit d'une fonction spécifique au format d'image qui active le balayage de progressive lors de l'écriture d'images. Pour les formats d'image qui ne permettent pas de définir un indicateur de balayage progressive, cette valeur est ignorée.
La valeur par défaut est false.
Voir également progressiveScanWrite().
void QImageWriter::setQuality(int quality)
Définit le paramètre de qualité du format d'image à quality.
Certains formats d'image, en particulier les formats avec perte, impliquent un compromis entre a) la qualité visuelle de l'image résultante et b) le temps d'exécution de l'encodage et le niveau de compression. Cette fonction définit le niveau de ce compromis pour les formats d'image qui le supportent. Pour les autres formats, cette valeur est ignorée.
La plage de valeurs de quality dépend du format d'image. Par exemple, le format "jpeg" prend en charge une plage de qualité allant de 0 (faible qualité visuelle, forte compression) à 100 (haute qualité visuelle, faible compression).
Voir aussi quality().
void QImageWriter::setSubType(const QByteArray &type)
Il s'agit d'une fonction spécifique au format d'image qui définit le sous-type de l'image à type. Le sous-type peut être utilisé par un gestionnaire pour déterminer le format à utiliser lors de l'enregistrement de l'image.
Par exemple, l'enregistrement d'une image au format DDS avec le sous-type A8R8G8R8 :
QImageWriter writer("some/image.dds"); if (writer.supportsOption(QImageIOHandler::SubType)) writer.setSubType("A8R8G8B8"); writer.write(image);
Voir aussi subType().
void QImageWriter::setText(const QString &key, const QString &text)
Définit le texte de l'image associé à la clé key en text. Cela permet de stocker des informations sur les droits d'auteur ou d'autres informations sur l'image. Exemple :
QImage image("some/image.jpeg"); QImageWriter writer("images/outimage.png", "png"); writer.setText("Author", "John Smith"); writer.write(image);
Si vous souhaitez stocker un seul bloc de données (par exemple, un commentaire), vous pouvez passer une clé vide ou utiliser une clé générique comme "Description".
La clé et le texte seront intégrés dans les données de l'image après l'appel à write().
La prise en charge de cette option est assurée par QImageIOHandler::Description.
Voir aussi QImage::setText() et QImageReader::text().
void QImageWriter::setTransformation(QImageIOHandler::Transformations transform)
Définit les métadonnées de transformation de l'image, y compris l'orientation, à transform.
Si les métadonnées de transformation ne sont pas prises en charge par le format d'image, la transformation est appliquée avant l'écriture.
Voir aussi transformation() et write().
QByteArray QImageWriter::subType() const
Renvoie le sous-type de l'image.
Voir aussi setSubType().
[static] QList<QByteArray> QImageWriter::supportedImageFormats()
Retourne la liste des formats d'image supportés par QImageWriter.
Par défaut, Qt peut écrire les formats suivants :
| Format | Type MIME | Description de l'image |
|---|---|---|
| BMP | image/bmp | Bitmap Windows |
| JPG | image/jpeg | Groupe mixte d'experts en photographie |
| PNG | image/png | Portable Network Graphics (Graphique de réseau portable) |
| PBM | image/x-portable-bitmap | Bitmap portable |
| PGM | image/x-portable-graymap | Carte de gris portable |
| PPM | image/x-portable-pixmap | Carte de pixels portable |
| XBM | image/x-xbitmap | Bitmap X11 |
| XPM | image/x-xpixmap | X11 Pixmap |
La lecture et l'écriture de fichiers SVG sont prises en charge par le module Qt SVG module. Le module Qt Image Formats prend en charge d'autres formats d'image.
Notez que l'instance QApplication doit être créée avant que cette fonction ne soit appelée.
Voir aussi setFormat(), QImageReader::supportedImageFormats(), et QImageIOPlugin.
[static] QList<QByteArray> QImageWriter::supportedMimeTypes()
Renvoie la liste des types MIME pris en charge par QImageWriter.
Notez que l'instance QApplication doit être créée avant que cette fonction ne soit appelée.
Voir aussi supportedImageFormats() et QImageReader::supportedMimeTypes().
QList<QByteArray> QImageWriter::supportedSubTypes() const
Renvoie la liste des sous-types pris en charge par une image.
bool QImageWriter::supportsOption(QImageIOHandler::ImageOption option) const
Renvoie true si l'auteur prend en charge option; sinon, renvoie false.
Différents formats d'image prennent en charge différentes options. Appelez cette fonction pour déterminer si une certaine option est prise en charge par le format actuel. Par exemple, le format PNG vous permet d'intégrer du texte dans les métadonnées de l'image (voir text()).
QImageWriter writer(fileName); if (writer.supportsOption(QImageIOHandler::Description)) writer.setText("Author", "John Smith");
Les options peuvent être testées une fois que l'auteur a été associé à un format.
Voir également QImageReader::supportsOption() et setFormat().
QImageIOHandler::Transformations QImageWriter::transformation() const
Renvoie la transformation et l'orientation avec lesquelles l'image a été écrite.
Voir aussi setTransformation().
bool QImageWriter::write(const QImage &image)
Écrit l'image image sur le périphérique ou le nom de fichier attribué. Renvoie true en cas de succès, sinon false. Si l'opération échoue, vous pouvez appeler error() pour connaître le type d'erreur qui s'est produite, ou errorString() pour obtenir une description lisible de l'erreur.
Voir aussi canWrite(), error() et 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.