QImageWriter Class
La classe QImageWriter offre une interface indépendante du format permettant d'enregistrer des images dans des fichiers ou sur d'autres périphériques. En savoir plus...
| 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 d'enregistrer l'image. Si vous n'avez pas besoin de ces options, vous pouvez utiliser QImage::save() ou QPixmap::save() à la place.
Pour enregistrer une image, commencez par créer un objet QImageWriter. Passez soit un nom de fichier, soit un pointeur de périphérique, ainsi que le format d'image au constructeur de QImageWriter. Vous pouvez ensuite définir plusieurs options, telles que la qualité (en appelant setQuality()). La fonction canWrite() renvoie true si QImageWriter peut écrire l’image (c’est-à-dire si le format d’image est pris en charge et si le périphérique est ouvert en écriture). Appelez write() pour écrire l’image sur le périphérique.
Si une erreur se produit lors de l’écriture de l’image, la fonction write() renvoie « false ». Vous pouvez alors appeler error() pour connaître le type d’erreur survenue, ou errorString() pour obtenir une description lisible par l’utilisateur 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, ainsi que tous les plugins de formats d'image prenant en charge l'écriture.
Remarque : QImageWriter prend 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’une portée est la méthode recommandée.
Par exemple :
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 également QImageReader, QImageIOHandler, QImageIOPlugin et QColorSpace.
Documentation sur les types de membres
enum QImageWriter::ImageWriterError
Cette énumération décrit les erreurs pouvant survenir lors de l'écriture d'images avec QImageWriter.
| Constante | Valeur | Description |
|---|---|---|
QImageWriter::DeviceError | 1 | QImageWriter Une erreur de périphérique s'est produite lors de l'écriture des données d'image. Consultez votre périphérique pour plus de détails sur la nature du problème. |
QImageWriter::UnsupportedFormatError | 2 | Qt ne prend pas en charge le format d'image demandé. |
QImageWriter::InvalidImageError | 3 | Une tentative d’écriture d’une image QImage non valide a eu lieu. Un exemple d’image non valide serait une image QImage nulle. |
QImageWriter::UnknownError | 0 | Une erreur inconnue s'est produite. Si vous obtenez cette valeur après avoir appelé ` write()`, elle est très probablement due à un bogue dans ` QImageWriter`. |
Documentation des fonctions membres
QImageWriter::QImageWriter()
Crée un objet QImageWriter vide. Avant de procéder à l'écriture, vous devez appeler la méthode setFormat() pour définir un format d'image, puis la méthode setDevice() ou setFileName().
[explicit] QImageWriter::QImageWriter(QIODevice *device, const QByteArray &format)
Crée 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())
Crée un objet QImageWriter qui écrira dans un fichier nommé « fileName », en utilisant le format d'image « format ». Si « format » n'est pas fourni, QImageWriter détectera le format d'image en analysant l'extension du fichier « fileName ».
[noexcept] QImageWriter::~QImageWriter()
Détruit l'objet « QImageWriter ».
bool QImageWriter::canWrite() const
Renvoie « true » si « QImageWriter » peut écrire l'image ; c'est-à-dire si le format de l'image est pris en charge et si le périphérique associé est ouvert en lecture.
Voir également write(), setDevice() et setFormat().
int QImageWriter::compression() const
Renvoie le taux de 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 également setDevice().
QImageWriter::ImageWriterError QImageWriter::error() const
Renvoie le type de l'erreur qui s'est produite en dernier.
Voir également ImageWriterError et errorString().
QString QImageWriter::errorString() const
Renvoie une description lisible par l'utilisateur de la dernière erreur survenue.
Voir également error().
QString QImageWriter::fileName() const
Si le périphérique actuellement attribué est un fichier, ou si la fonction setFileName() a été appelée, cette fonction renvoie le nom du fichier dans lequel la fonction QImageWriter effectue l'écriture. Dans le cas contraire (c'est-à-dire si aucun périphérique n'a été attribué ou si le périphérique n'est pas un fichier), un QString vide est renvoyé.
Voir également setFileName() et setDevice().
QByteArray QImageWriter::format() const
Renvoie le format utilisé par l'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 l'appel de cette fonction.
Voir également supportedImageFormats() et supportedMimeTypes().
bool QImageWriter::optimizedWrite() const
Indique 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 enregistrée en mode progressif.
Voir également setProgressiveScanWrite().
int QImageWriter::quality() const
Renvoie le paramètre de qualité du format d'image.
Voir également setQuality().
void QImageWriter::setCompression(int compression)
Il s'agit d'une fonction spécifique au format d'image qui définit le niveau de compression d'une image. Pour les formats d'image qui ne prennent pas en charge le réglage de la compression, cette valeur est ignorée.
La plage de valeurs de ` compression ` dépend du format d'image :
| Format d'image | Valeurs prises en charge |
|---|---|
| PNG | Valeurs comprises entre 0 (aucune compression) et 100 (faible qualité visuelle, compression maximale). Cette valeur est l'inverse de la qualité définie dans ` setQuality`. Ces deux options s'excluent mutuellement. |
| TGA | 0 - Aucune compression 1 - Compression RLE |
| TIFF | 0 - Aucune compression 1 - Compression RLE 2 - Compression RLE 3 - Codage fax CCITT Groupe 3 4 - Codage fax CCITT Groupe 4 5 - Compression JPEG |
Voir également compression() et setQuality().
void QImageWriter::setDevice(QIODevice *device)
Définit le périphérique de QImageWriter sur device. Si un périphérique a déjà été défini, l'ancien périphérique est supprimé de QImageWriter et reste inchangé par ailleurs.
Si le périphérique n’est pas encore ouvert, ` QImageWriter ` tentera de l’ouvrir en mode ` QIODeviceBase::WriteOnly ` en appelant la fonction `open()`. Notez que cela ne fonctionne pas pour certains périphériques, tels que ` QProcess`, ` QTcpSocket ` et ` QUdpSocket`, pour lesquels une logique plus complexe est nécessaire afin d’ouvrir le périphérique.
Voir également device() et setFileName().
void QImageWriter::setFileName(const QString &fileName)
Définit le nom de fichier de ` QImageWriter ` sur ` fileName`. En interne, ` QImageWriter ` créera un fichier ` QFile `, l'ouvrira en mode ` QIODevice::WriteOnly ` et utilisera ce fichier lors de l'écriture des images.
Voir également fileName() et setDevice().
void QImageWriter::setFormat(const QByteArray &format)
Définit le format que QImageWriter utilisera lors de l'écriture des images, à l'adresse 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 la fonction ` supportedImageFormats()` pour obtenir la liste complète des formats pris en charge par ` QImageWriter `.
Voir également la fonction format().
void QImageWriter::setOptimizedWrite(bool optimize)
Il s'agit d'une fonction spécifique au format d'image qui active les indicateurs « optimize » lors de l'écriture des images. Pour les formats d'image qui ne prennent pas en charge l'activation de l'indicateur « 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 la numérisation « progressive » lors de l'écriture des images. Pour les formats d'image qui ne prennent pas en charge le paramètre de numérisation « 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 sur « quality ».
Certains formats d’image, en particulier ceux avec perte, impliquent un compromis entre a) la qualité visuelle de l’image obtenue 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 prennent en charge. 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, compression élevée) à 100 (haute qualité visuelle, faible compression).
Voir également 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 sur « 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, pour enregistrer 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 également subType().
void QImageWriter::setText(const QString &key, const QString &text)
Définit le texte associé à l'image pour la clé « key » sur « text ». Cela est utile pour stocker des informations de droits d'auteur ou d'autres informations concernant 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 telle que « Description ».
La clé et le texte seront intégrés dans les données de l'image après l'appel de la fonction write().
La prise en charge de cette option est assurée par la fonction QImageIOHandler::Description.
Voir également QImage::setText() et QImageReader::text().
void QImageWriter::setTransformation(QImageIOHandler::Transformations transform)
Définit les métadonnées relatives aux transformations de l'image, y compris l'orientation, à l'adresse transform.
Si le format d'image ne prend pas en charge les métadonnées de transformation, la transformation est appliquée avant l'écriture.
Voir également transformation() et write().
QByteArray QImageWriter::subType() const
Renvoie le sous-type de l'image.
Voir aussi setSubType().
[static] QList<QByteArray> QImageWriter::supportedImageFormats()
Renvoie la liste des formats d'image pris en charge par QImageWriter.
Par défaut, Qt peut écrire les formats suivants :
| Format | Type MIME | Description |
|---|---|---|
| BMP | image/bmp | Bitmap Windows |
| JPG | image/jpeg | Joint Photographic Experts Group |
| PNG | image/png | Portable Network Graphics |
| PBM | image/x-portable-bitmap | Bitmap portable |
| PGM | image/x-portable-graymap | Carte grise portable |
| PPM | image/x-portable-pixmap | Pixmap portable |
| XBM | image/x-xbitmap | Bitmap X11 |
| XPM | image/x-xpixmap | Pixmap X11 |
La lecture et l'écriture de fichiers SVG sont prises en charge via le Qt SVG module. Le Qt Image Formats module prend en charge d’autres formats d’image.
Notez que l'instance ` QApplication ` doit être créée avant l'appel de cette fonction.
Voir également 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 l'appel de cette fonction.
Voir également 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'éditeur prend en charge « option » ; sinon, renvoie « false ».
Les différents formats d’image prennent en charge des options différentes. Appelez cette fonction pour déterminer si une option donnée est prise en charge par le format actuel. Par exemple, le format PNG 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’enregistreur a été associé à un format.
Voir également ` QImageReader::supportsOption()` et ` setFormat()`.
QImageIOHandler::Transformations QImageWriter::transformation() const
Renvoie la transformation et l'orientation définies pour l'image lors de son enregistrement.
Voir également setTransformation().
bool QImageWriter::write(const QImage &image)
Écrit l'image image sur le périphérique ou dans le fichier spécifié. Renvoie true en cas de succès ; sinon, renvoie false. Si l'opération échoue, vous pouvez appeler error() pour connaître le type d'erreur survenue, ou errorString() pour obtenir une description lisible de l'erreur.
Voir également 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.