Sur cette page

QImageIOHandler Class

La classe QImageIOHandler définit l'interface d'E/S d'image commune à tous les formats d'image dans Qt. Plus d'informations...

En-tête : #include <QImageIOHandler>
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 ImageOption { Size, ClipRect, ScaledSize, ScaledClipRect, Description, …, ImageTransformation }
enum Transformation { TransformationNone, TransformationMirror, TransformationFlip, TransformationRotate180, TransformationRotate90, …, TransformationRotate270 }
flags Transformations

Fonctions publiques

QImageIOHandler()
virtual ~QImageIOHandler()
virtual bool canRead() const = 0
virtual int currentImageNumber() const
virtual QRect currentImageRect() const
QIODevice *device() const
QByteArray format() const
virtual int imageCount() const
virtual bool jumpToImage(int imageNumber)
virtual bool jumpToNextImage()
virtual int loopCount() const
virtual int nextImageDelay() const
virtual QVariant option(QImageIOHandler::ImageOption option) const
virtual bool read(QImage *image) = 0
void setDevice(QIODevice *device)
void setFormat(const QByteArray &format)
void setFormat(const QByteArray &format) const
virtual void setOption(QImageIOHandler::ImageOption option, const QVariant &value)
virtual bool supportsOption(QImageIOHandler::ImageOption option) const
virtual bool write(const QImage &image)

Membres publics statiques

(since 6.0) bool allocateImage(QSize size, QImage::Format format, QImage *image)

Description détaillée

Qt utilise QImageIOHandler pour lire et écrire des images via QImageReader et QImageWriter. Vous pouvez également dériver de cette classe pour écrire votre propre gestionnaire de format d'image en utilisant le mécanisme de plugin de Qt.

Appelez setDevice() pour assigner un périphérique au gestionnaire et setFormat() pour lui assigner un format. Un QImageIOHandler peut prendre en charge plus d'un format d'image. canRead() renvoie true si une image peut être lue sur le périphérique, et read() et write() renvoient true si la lecture ou l'écriture d'une image a été effectuée avec succès.

QImageIOHandler prend également en charge les formats d'animation, grâce aux fonctions loopCount(), imageCount(), nextImageDelay() et currentImageNumber().

Afin de déterminer les options prises en charge par un gestionnaire d'images, Qt appelle supportsOption() et setOption(). Veillez à réimplémenter ces fonctions si vous pouvez prendre en charge l'une des options de l'énumération ImageOption.

Pour écrire votre propre gestionnaire d'images, vous devez au moins réimplémenter canRead() et read(). Ensuite, créez un QImageIOPlugin qui peut créer le gestionnaire. Enfin, installez votre plugin, et QImageReader et QImageWriter chargeront automatiquement le plugin et commenceront à l'utiliser.

Voir aussi QImageIOPlugin, QImageReader, et QImageWriter.

Documentation sur les types de membres

enum QImageIOHandler::ImageOption

Cette énumération décrit les différentes options prises en charge par QImageIOHandler. Certaines options sont utilisées pour demander les propriétés d'une image, et d'autres sont utilisées pour basculer la manière dont une image doit être écrite.

ConstanteValeurDescription
QImageIOHandler::Size0La taille originale d'une image. Un gestionnaire qui prend en charge cette option est censé lire la taille de l'image à partir des métadonnées de l'image et renvoyer cette taille à partir de option() en tant que QSize.
QImageIOHandler::ClipRect1Le rectangle de découpe, ou ROI (Region Of Interest). Un gestionnaire qui prend en charge cette option est censé lire uniquement la zone fournie QRect de l'image originale dans read(), avant que toute autre transformation ne soit appliquée.
QImageIOHandler::ScaledSize4La taille de l'image à l'échelle. Un gestionnaire qui prend en charge cette option est censé mettre à l'échelle l'image à la taille fournie ( QSize), après avoir appliqué toute transformation de rectangle d'écrêtage (ClipRect). Si le gestionnaire ne prend pas en charge cette option, QImageReader effectuera la mise à l'échelle après la lecture de l'image.
QImageIOHandler::ScaledClipRect3Le clip rect mis à l'échelle (ou ROI, Region Of Interest) de l'image. Un gestionnaire qui prend en charge cette option est censé appliquer le rectangle d'écrêtage fourni ( QRect), après avoir appliqué une mise à l'échelle (ScaleSize) ou un écrêtage normal (ClipRect). Si le gestionnaire ne prend pas en charge cette option, QImageReader appliquera le rectangle d'écrêtage mis à l'échelle après la lecture de l'image.
QImageIOHandler::Description2La description de l'image. Certains formats d'image, tels que GIF et PNG, permettent d'incorporer du texte ou des commentaires dans les données de l'image (par exemple, pour stocker des informations sur les droits d'auteur). Il est courant que le texte soit stocké dans des paires clé-valeur, mais certains formats stockent tout le texte dans un bloc continu. QImageIOHandler renvoie le texte sous forme de QString, où les clés et les valeurs sont séparées par un " :", et les paires clé-valeur sont séparées par deux nouvelles lignes (\n\n ). Par exemple, "Title : Coucher de soleil\n\nAuthor : Jim Smith\nSarah Jones\n\n ". Les formats qui stockent du texte dans un seul bloc peuvent utiliser "Description" comme clé.
QImageIOHandler::CompressionRatio5Le taux de compression des données de l'image. Un gestionnaire qui prend en charge cette option est censé définir son taux de compression en fonction de la valeur de cette option (un int) lors de l'écriture.
QImageIOHandler::Gamma6Le niveau de gamma de l'image. Un gestionnaire qui prend en charge cette option est censé définir le niveau de gamma de l'image en fonction de la valeur de cette option (un float) lors de l'écriture.
QImageIOHandler::Quality7Le niveau de qualité de l'image. Un gestionnaire qui prend en charge cette option est censé définir le niveau de qualité de l'image en fonction de la valeur de cette option (un int) lors de l'écriture.
QImageIOHandler::Name8Le nom de l'image. Un gestionnaire qui prend en charge cette option est censé lire le nom à partir des métadonnées de l'image et le renvoyer sous la forme d'une adresse QString ou, lors de l'écriture d'une image, il est censé stocker le nom dans les métadonnées de l'image.
QImageIOHandler::SubType9Le sous-type de l'image. Un gestionnaire qui prend en charge cette option peut utiliser la valeur du sous-type pour faciliter la lecture et l'écriture des images. Par exemple, un gestionnaire PPM peut avoir une valeur de sous-type "ppm" ou "ppmraw".
QImageIOHandler::IncrementalReading10Un gestionnaire qui prend en charge cette option est censé lire l'image en plusieurs passes, comme s'il s'agissait d'une animation. QImageReader traitera l'image comme une animation.
QImageIOHandler::Endianness11L'encodage de l'image. Certains formats d'image peuvent être stockés en BigEndian ou LittleEndian. Un gestionnaire qui prend en charge l'endianité utilise la valeur de cette option pour déterminer comment l'image doit être stockée.
QImageIOHandler::Animation12Les formats d'image qui prennent en charge l'animation renvoient un vrai pour cette valeur dans supportsOption() ; sinon, un faux est renvoyé.
QImageIOHandler::BackgroundColor13Certains formats d'image permettent de spécifier la couleur d'arrière-plan. Un gestionnaire qui prend en charge BackgroundColor initialise la couleur d'arrière-plan avec cette option (a QColor) lors de la lecture d'une image.
QImageIOHandler::ImageFormat14Le format de données de l'image renvoyé par le gestionnaire. Il peut s'agir de n'importe lequel des formats énumérés à l'adresse QImage::Format.
QImageIOHandler::SupportedSubTypes15Les formats d'image qui prennent en charge différentes variantes d'enregistrement doivent renvoyer une liste des noms des variantes prises en charge (QList<QByteArray>) dans cette option.
QImageIOHandler::OptimizedWrite16Un gestionnaire qui prend en charge cette option est censé activer les drapeaux d'optimisation lors de l'écriture.
QImageIOHandler::ProgressiveScanWrite17Un gestionnaire qui prend en charge cette option est censé écrire l'image en tant qu'image à balayage progressif.
QImageIOHandler::ImageTransformation18Un gestionnaire qui prend en charge cette option peut lire les métadonnées de transformation d'une image. Un gestionnaire qui prend en charge cette option ne doit pas appliquer lui-même la transformation.

enum QImageIOHandler::Transformation
flags QImageIOHandler::Transformations

Cette énumération décrit les différentes transformations ou orientations prises en charge par certains formats d'image, généralement via EXIF.

ConstanteValeurDescription
QImageIOHandler::TransformationNone0Aucune transformation ne doit être appliquée.
QImageIOHandler::TransformationMirror1Miroir horizontal de l'image.
QImageIOHandler::TransformationFlip2Miroir de l'image verticalement.
QImageIOHandler::TransformationRotate180TransformationMirror | TransformationFlipRotation de l'image de 180 degrés. Cela revient à l'inverser horizontalement et verticalement.
QImageIOHandler::TransformationRotate904Faire pivoter l'image de 90 degrés.
QImageIOHandler::TransformationMirrorAndRotate90TransformationMirror | TransformationRotate90Mettez l'image en miroir horizontalement, puis faites-la pivoter de 90 degrés.
QImageIOHandler::TransformationFlipAndRotate90TransformationFlip | TransformationRotate90Mettez l'image en miroir verticalement, puis faites-la pivoter de 90 degrés.
QImageIOHandler::TransformationRotate270TransformationRotate180 | TransformationRotate90Faire pivoter l'image de 270 degrés. C'est la même chose que de mettre en miroir l'image horizontalement et verticalement, puis de la faire pivoter de 90 degrés.

Le type Transformations est un typedef pour QFlags<Transformation>. Il stocke une combinaison OU de valeurs de transformation.

Voir également QImageReader::transformation(), QImageReader::setAutoTransform() et QImageWriter::setTransformation().

Documentation des fonctions membres

QImageIOHandler::QImageIOHandler()

Construit un objet QImageIOHandler.

[virtual noexcept] QImageIOHandler::~QImageIOHandler()

Détruit l'objet QImageIOHandler.

[static, since 6.0] bool QImageIOHandler::allocateImage(QSize size, QImage::Format format, QImage *image)

Il s'agit d'une méthode de commodité pour la fonction de lecture dans les sous-classes. Les gestionnaires de format d'image doivent refuser de charger une image si l'allocation requise dépasse la limite d'allocation actuelle. Cette fonction vérifie les paramètres et la limite, et effectue l'allocation si elle est valide et nécessaire. En cas de retour réussi, image sera un QImage valide et détaché des size et format donnés.

Cette fonction a été introduite dans Qt 6.0.

Voir aussi QImageReader::allocationLimit().

[pure virtual] bool QImageIOHandler::canRead() const

Renvoie true si une image peut être lue sur le périphérique (c'est-à-dire que le format d'image est pris en charge, que le périphérique peut être lu et que les informations d'en-tête initiales suggèrent que l'image peut être lue) ; sinon, renvoie false.

Lorsque vous réimplémentez canRead(), assurez-vous que le périphérique d'E/S (device()) est laissé dans son état d'origine (par exemple, en utilisant peek() plutôt que read()).

Voir également read() et QIODevice::peek().

[virtual] int QImageIOHandler::currentImageNumber() const

Pour les formats d'image qui supportent l'animation, cette fonction renvoie le numéro de séquence de l'image courante dans l'animation. Si cette fonction est appelée avant qu'une image ne soit read(), elle renvoie -1. Le numéro de la première image de la séquence est 0.

Si le format d'image ne prend pas en charge l'animation, la fonction renvoie 0.

Voir également read().

[virtual] QRect QImageIOHandler::currentImageRect() const

Renvoie le rectangle de l'image courante. Si aucun rect n'est défini pour l'image, un QRect() vide est renvoyé.

Cette fonction est utile pour les animations, où seules certaines parties de l'image peuvent être mises à jour à la fois.

QIODevice *QImageIOHandler::device() const

Renvoie le périphérique actuellement attribué à QImageIOHandler. Si aucun périphérique n'a été attribué, nullptr est renvoyé.

Voir aussi setDevice().

QByteArray QImageIOHandler::format() const

Renvoie le format actuellement attribué à QImageIOHandler. Si aucun format n'a été attribué, une chaîne vide est renvoyée.

Voir aussi setFormat().

[virtual] int QImageIOHandler::imageCount() const

Pour les formats d'image qui supportent l'animation, cette fonction renvoie le nombre d'images dans l'animation. Si le format d'image ne prend pas en charge l'animation, ou s'il n'est pas en mesure de déterminer le nombre d'images, la fonction renvoie 0.

L'implémentation par défaut renvoie 1 si canRead() renvoie true; sinon, 0 est renvoyé.

[virtual] bool QImageIOHandler::jumpToImage(int imageNumber)

Pour les formats d'image qui supportent l'animation, cette fonction saute à l'image dont le numéro de séquence est imageNumber. Le prochain appel à read() tentera de lire cette image.

L'implémentation par défaut ne fait rien et renvoie false.

[virtual] bool QImageIOHandler::jumpToNextImage()

Pour les formats d'image qui prennent en charge l'animation, cette fonction passe à l'image suivante.

L'implémentation par défaut ne fait rien et renvoie false.

[virtual] int QImageIOHandler::loopCount() const

Pour les formats d'image qui supportent l'animation, cette fonction renvoie le nombre de fois que l'animation doit tourner en boucle. Si le format d'image ne prend pas en charge l'animation, la fonction renvoie 0.

[virtual] int QImageIOHandler::nextImageDelay() const

Pour les formats d'image qui supportent l'animation, cette fonction renvoie le nombre de millisecondes à attendre avant de lire l'image suivante. Si le format d'image ne prend pas en charge l'animation, la fonction renvoie 0.

[virtual] QVariant QImageIOHandler::option(QImageIOHandler::ImageOption option) const

Renvoie la valeur attribuée à option sous la forme d'un QVariant. Le type de la valeur dépend de l'option. Par exemple, option(Size) renvoie une variante de QSize.

Voir aussi setOption() et supportsOption().

[pure virtual] bool QImageIOHandler::read(QImage *image)

Lit une image à partir de l'appareil et la stocke dans image. Renvoie true si l'image est lue avec succès ; sinon, renvoie false.

Pour les formats d'image qui prennent en charge le chargement incrémentiel et les formats d'animation, le gestionnaire d'image peut supposer que image pointe vers l'image précédente.

Voir également canRead().

void QImageIOHandler::setDevice(QIODevice *device)

Définit le périphérique de QImageIOHandler à device. Le gestionnaire d'images utilisera ce périphérique lors de la lecture et de l'écriture d'images.

Le périphérique ne peut être défini qu'une seule fois et doit l'être avant d'appeler canRead(), read(), write(), etc. Si vous devez lire plusieurs fichiers, construisez plusieurs instances de la sous-classe QImageIOHandler appropriée.

Voir aussi device().

void QImageIOHandler::setFormat(const QByteArray &format)

Définit le format de QImageIOHandler à format. Ce format est particulièrement utile pour les gestionnaires qui prennent en charge plusieurs formats d'image.

Voir aussi format().

void QImageIOHandler::setFormat(const QByteArray &format) const

Définit le format de QImageIOHandler à format. Le format est très utile pour les gestionnaires qui prennent en charge plusieurs formats d'image.

Cette fonction est déclarée const pour pouvoir être appelée à partir de canRead().

Voir aussi format().

[virtual] void QImageIOHandler::setOption(QImageIOHandler::ImageOption option, const QVariant &value)

Fixe l'option option avec la valeur value.

Voir aussi option() et ImageOption.

[virtual] bool QImageIOHandler::supportsOption(QImageIOHandler::ImageOption option) const

Renvoie true si le site QImageIOHandler prend en charge l'option option; sinon, il renvoie false. Par exemple, si QImageIOHandler prend en charge l'option Size, supportsOption(Size) doit renvoyer true.

Voir aussi setOption() et option().

[virtual] bool QImageIOHandler::write(const QImage &image)

Écrit l'image image sur le périphérique assigné. Renvoie true en cas de succès, sinon false.

L'implémentation par défaut ne fait rien et renvoie simplement false.

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