QImageIOHandler Class
La classe `QImageIOHandler` définit l'interface commune d'entrée-sortie d'images pour tous les formats d'images dans Qt. En savoir plus...
| 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 créer votre propre gestionnaire de format d'image à l'aide du mécanisme de plugins de Qt.
Appelez setDevice() pour associer un périphérique au gestionnaire, et setFormat() pour lui associer un format. Un QImageIOHandler peut prendre en charge plusieurs formats d’image. canRead() renvoie true si une image peut être lue à partir du périphérique, et read() et write() renvoient true si la lecture ou l’écriture d’une image s’est déroulée avec succès.
QImageIOHandler prend également en charge les formats d’animation, via les fonctions loopCount(), imageCount(), nextImageDelay() et currentImageNumber().
Afin de déterminer les options prises en charge par un gestionnaire d’images, Qt appelle les fonctions 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 minimum réimplémenter canRead() et read(). Créez ensuite un QImageIOPlugin capable de créer le gestionnaire. Enfin, installez votre plugin : QImageReader et QImageWriter le chargeront alors automatiquement et commenceront à l’utiliser.
Voir également 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 servent à interroger une image pour en connaître les propriétés, tandis que d'autres permettent de modifier la manière dont une image doit être écrite.
| Constante | Valeur | Description |
|---|---|---|
QImageIOHandler::Size | 0 | La taille d'origine d'une image. Un gestionnaire prenant en charge cette option doit lire la taille de l'image à partir des métadonnées de l'image et renvoyer cette taille via la fonction option() sous la forme d'un objet de type ` QSize`. |
QImageIOHandler::ClipRect | 1 | Le rectangle de découpe, ou ROI (Region Of Interest). Un gestionnaire prenant en charge cette option doit se contenter de lire la zone d’ QRect fournie à partir de l’image d’origine dans la fonction read(), avant l’application de toute autre transformation. |
QImageIOHandler::ScaledSize | 4 | La taille mise à l'échelle de l'image. Un gestionnaire prenant en charge cette option doit mettre l'image à l'échelle de la taille fournie (un QSize), après avoir appliqué toute transformation de rectangle de découpe (ClipRect). Si le gestionnaire ne prend pas en charge cette option, QImageReader effectuera la mise à l'échelle une fois l'image lue. |
QImageIOHandler::ScaledClipRect | 3 | Le rectangle de découpe mis à l’échelle (ou ROI, Region Of Interest) de l’image. Un gestionnaire prenant en charge cette option doit appliquer le rectangle de découpe fourni (un QRect), après avoir appliqué tout redimensionnement (ScaleSize) ou découpage standard (ClipRect). Si le gestionnaire ne prend pas en charge cette option, QImageReader appliquera le rectangle de découpe redimensionné une fois l’image lue. |
QImageIOHandler::Description | 2 | La description de l’image. Certains formats d’image, tels que GIF et PNG, permettent d’intégrer du texte ou des commentaires dans les données de l’image (par exemple, pour stocker des informations de droits d’auteur). Il est courant que le texte soit stocké sous forme de paires clé-valeur, mais certains formats stockent tout le texte dans un bloc continu. QImageIOHandler renvoie le texte sous la forme d’un 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 sauts de ligne (\n\n ). Par exemple : « Title: Sunset\n\nAuthor : Jim Smith\nSarah Jones\n\n ». Les formats qui stockent le texte en un seul bloc peuvent utiliser « Description » comme clé. |
QImageIOHandler::CompressionRatio | 5 | Le taux de compression des données d’image. Un gestionnaire prenant en charge cette option doit définir son taux de compression en fonction de la valeur de cette option (un entier) lors de l’écriture. |
QImageIOHandler::Gamma | 6 | Le niveau de gamma de l’image. Un gestionnaire prenant en charge cette option doit définir le niveau de gamma de l’image en fonction de la valeur de cette option (un nombre à virgule flottante) lors de l’écriture. |
QImageIOHandler::Quality | 7 | Le niveau de qualité de l’image. Un gestionnaire prenant en charge cette option doit définir le niveau de qualité de l’image en fonction de la valeur de cette option (un entier) lors de l’écriture. |
QImageIOHandler::Name | 8 | Le nom de l’image. Un gestionnaire prenant en charge cette option doit lire le nom à partir des métadonnées de l’image et le renvoyer sous la forme d’un ` QString`, ou, lors de l’écriture d’une image, il doit stocker le nom dans les métadonnées de l’image. |
QImageIOHandler::SubType | 9 | Le sous-type de l’image. Un gestionnaire prenant 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::IncrementalReading | 10 | Un gestionnaire prenant en charge cette option doit lire l’image en plusieurs passes, comme s’il s’agissait d’une animation. ` QImageReader ` traitera l’image comme une animation. |
QImageIOHandler::Endianness | 11 | L’endianness de l’image. Certains formats d’image peuvent être stockés en BigEndian ou en LittleEndian. Un gestionnaire prenant en charge l’endianness utilise la valeur de cette option pour déterminer comment l’image doit être stockée. |
QImageIOHandler::Animation | 12 | Les formats d’image prenant en charge l’animation renvoient « true » pour cette valeur dans la fonction supportsOption() ; dans le cas contraire, « false » est renvoyé. |
QImageIOHandler::BackgroundColor | 13 | Certains formats d’image permettent de spécifier la couleur d’arrière-plan. Un gestionnaire prenant en charge l’option BackgroundColor initialise la couleur d’arrière-plan à la valeur de cette option (un QColor) lors de la lecture d’une image. |
QImageIOHandler::ImageFormat | 14 | Le format de données de l’image renvoyé par le gestionnaire. Il peut s’agir de n’importe quel format répertorié dans ` QImage::Format`. |
QImageIOHandler::SupportedSubTypes | 15 | Les formats d’image prenant en charge différentes variantes d’enregistrement doivent renvoyer une liste des noms de variantes prises en charge (QList<QByteArray>) dans cette option. |
QImageIOHandler::OptimizedWrite | 16 | Un gestionnaire prenant en charge cette option est censé activer les indicateurs d’optimisation lors de l’écriture. |
QImageIOHandler::ProgressiveScanWrite | 17 | Un gestionnaire prenant en charge cette option doit écrire l’image sous forme d’image à balayage progressif. |
QImageIOHandler::ImageTransformation | 18 | Un gestionnaire prenant en charge cette option peut lire les métadonnées de transformation d’une image. Un gestionnaire prenant en charge cette option ne doit pas appliquer la transformation lui-même. |
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.
| Constante | Valeur | Description |
|---|---|---|
QImageIOHandler::TransformationNone | 0 | Aucune transformation ne doit être appliquée. |
QImageIOHandler::TransformationMirror | 1 | Inverser l'image horizontalement. |
QImageIOHandler::TransformationFlip | 2 | Inverser l'image verticalement. |
QImageIOHandler::TransformationRotate180 | TransformationMirror | TransformationFlip | Faire pivoter l'image de 180 degrés. Cela revient à la refléter à la fois horizontalement et verticalement. |
QImageIOHandler::TransformationRotate90 | 4 | Faites pivoter l'image de 90 degrés. |
QImageIOHandler::TransformationMirrorAndRotate90 | TransformationMirror | TransformationRotate90 | Inversez l'image horizontalement, puis faites-la pivoter de 90 degrés. |
QImageIOHandler::TransformationFlipAndRotate90 | TransformationFlip | TransformationRotate90 | Inversez l'image verticalement, puis faites-la pivoter de 90 degrés. |
QImageIOHandler::TransformationRotate270 | TransformationRotate180 | TransformationRotate90 | Faites pivoter l'image de 270 degrés. Cela revient à la faire basculer à la fois horizontalement et verticalement, puis à 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()
Crée 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 pratique destinée à la fonction de lecture dans les sous-classes. Les gestionnaires de formats 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, puis effectue l'allocation si celle-ci est valide et nécessaire. En cas de retour réussi, ` image ` sera un objet ` QImage ` valide et détaché, correspondant aux paramètres ` size ` et ` format` fournis.
Cette fonction a été introduite dans Qt 6.0.
Voir également QImageReader::allocationLimit().
[pure virtual] bool QImageIOHandler::canRead() const
Renvoie ` true ` si une image peut être lue à partir du périphérique (c'est-à-dire si le format de l'image est pris en charge, si le périphérique est accessible en lecture et si les informations d'en-tête initiales indiquent que l'image peut être lue) ; sinon, renvoie ` false`.
Lors de la réimplémentation de canRead(), veillez à ce que le périphérique d’E/S (device()) soit 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 prenant en charge l'animation, cette fonction renvoie le numéro de séquence de l'image actuelle dans l'animation. Si cette fonction est appelée avant qu'une image ne soit chargée via ` 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 valeur 0 est renvoyée.
Voir également read().
[virtual] QRect QImageIOHandler::currentImageRect() const
Renvoie le rectangle de l'image courante. Si aucun rectangle n'est défini pour l'image, un objet 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é à l'QImageIOHandler. Si aucun périphérique n'a été attribué, la valeur « nullptr » est renvoyée.
Voir également 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 prenant en charge l'animation, cette fonction renvoie le nombre d'images composant l'animation. Si le format d'image ne prend pas en charge l'animation, ou s'il est impossible de déterminer le nombre d'images, la valeur 0 est renvoyée.
L'implémentation par défaut renvoie 1 si la fonction ` canRead()` renvoie ` true` ; dans le cas contraire, elle renvoie 0.
[virtual] bool QImageIOHandler::jumpToImage(int imageNumber)
Pour les formats d'image prenant en charge l'animation, cette fonction passe à 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 prenant 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 prenant en charge l'animation, cette fonction renvoie le nombre de fois que l'animation doit être lue en boucle. Si le format d'image ne prend pas en charge l'animation, la valeur 0 est renvoyée.
[virtual] int QImageIOHandler::nextImageDelay() const
Pour les formats d'image prenant en charge 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 valeur 0 est renvoyée.
[virtual] QVariant QImageIOHandler::option(QImageIOHandler::ImageOption option) const
Renvoie la valeur attribuée à option sous la forme d'un objet de type « QVariant ». Le type de la valeur dépend de l'option. Par exemple, l'option (Size) renvoie une variante de type « QSize ».
Voir également setOption() et supportsOption().
[pure virtual] bool QImageIOHandler::read(QImage *image)
Lit une image à partir de l'appareil et l'enregistre dans ` image`. Renvoie ` true ` si la lecture de l'image a réussi ; sinon, renvoie `false`.
Pour les formats d’image prenant en charge le chargement incrémental, ainsi que pour les formats d’animation, le gestionnaire d’image peut considérer que image pointe vers l’image précédente.
Voir également canRead().
void QImageIOHandler::setDevice(QIODevice *device)
Définit le périphérique de la fonction ` QImageIOHandler ` sur ` 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, créez plusieurs instances de la sous-classe appropriée de QImageIOHandler.
Voir également device().
void QImageIOHandler::setFormat(const QByteArray &format)
Définit le format de l'QImageIOHandler sur format. Ce format est particulièrement utile pour les gestionnaires prenant en charge plusieurs formats d'image.
Voir également format().
void QImageIOHandler::setFormat(const QByteArray &format) const
Définit le format de la fonction ` QImageIOHandler ` sur ` format`. Ce format est particulièrement utile pour les gestionnaires prenant en charge plusieurs formats d'image.
Cette fonction est déclarée `const` afin de pouvoir être appelée depuis ` canRead()` ().
Voir également format().
[virtual] void QImageIOHandler::setOption(QImageIOHandler::ImageOption option, const QVariant &value)
Définit l'option option avec la valeur value.
Voir également option() et ImageOption.
[virtual] bool QImageIOHandler::supportsOption(QImageIOHandler::ImageOption option) const
Renvoie « true » si l'QImageIOHandler prend en charge l'option « option » ; sinon, renvoie « false ». Par exemple, si l'QImageIOHandler prend en charge l'option « Size », la fonction supportsOption(Size) doit renvoyer « true ».
Voir également setOption() et option().
[virtual] bool QImageIOHandler::write(const QImage &image)
Écrit l'image image sur le périphérique spécifié. Renvoie true en cas de réussite ; sinon, renvoie 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.