Sur cette page

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

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.

ConstanteValeurDescription
QImageWriter::DeviceError1QImageWriter 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::UnsupportedFormatError2Qt ne prend pas en charge le format d'image demandé.
QImageWriter::InvalidImageError3Une tentative d’écriture d’une image QImage non valide a eu lieu. Un exemple d’image non valide serait une image QImage nulle.
QImageWriter::UnknownError0Une 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'imageValeurs prises en charge
PNGValeurs 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.
TGA0 - Aucune compression
1 - Compression RLE
TIFF0 - 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 :

FormatType MIMEDescription
BMPimage/bmpBitmap Windows
JPGimage/jpegJoint Photographic Experts Group
PNGimage/pngPortable Network Graphics
PBMimage/x-portable-bitmapBitmap portable
PGMimage/x-portable-graymapCarte grise portable
PPMimage/x-portable-pixmapPixmap portable
XBMimage/x-xbitmapBitmap X11
XPMimage/x-xpixmapPixmap 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.