En esta página

QImageIOHandler Class

La clase QImageIOHandler define la interfaz de E/S de imagen común para todos los formatos de imagen en Qt. Más...

Cabecera: #include <QImageIOHandler>
CMake: find_package(Qt6 REQUIRED COMPONENTS Gui)
target_link_libraries(mytarget PRIVATE Qt6::Gui)
qmake: QT += gui

Nota: Todas las funciones de esta clase son reentrantes.

Tipos Públicos

enum ImageOption { Size, ClipRect, ScaledSize, ScaledClipRect, Description, …, ImageTransformation }
enum Transformation { TransformationNone, TransformationMirror, TransformationFlip, TransformationRotate180, TransformationRotate90, …, TransformationRotate270 }
flags Transformations

Funciones Públicas

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)

Miembros públicos estáticos

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

Descripción Detallada

Qt utiliza QImageIOHandler para leer y escribir imágenes a través de QImageReader y QImageWriter. También puedes derivar de esta clase para escribir tu propio manejador de formato de imagen utilizando el mecanismo de plugins de Qt.

Llama a setDevice() para asignar un dispositivo al manejador, y a setFormat() para asignarle un formato. Un QImageIOHandler puede soportar más de un formato de imagen. canRead() devuelve true si se puede leer una imagen del dispositivo, y read() y write() devuelven true si la lectura o escritura de una imagen se ha completado con éxito.

QImageIOHandler también tiene soporte para formatos de animaciones, a través de las funciones loopCount(), imageCount(), nextImageDelay() y currentImageNumber().

Para determinar qué opciones soporta un manejador de imágenes, Qt llamará a supportsOption() y setOption(). Asegúrate de reimplementar estas funciones si puedes proporcionar soporte para cualquiera de las opciones del enum ImageOption.

Para escribir tu propio manejador de imágenes, debes al menos reimplementar canRead() y read(). A continuación, cree un QImageIOPlugin que pueda crear el manejador. Finalmente, instale su plugin, y QImageReader y QImageWriter cargarán automáticamente el plugin y comenzarán a usarlo.

Ver también QImageIOPlugin, QImageReader, y QImageWriter.

Documentación de tipos de miembros

enum QImageIOHandler::ImageOption

Este enum describe las diferentes opciones soportadas por QImageIOHandler. Algunas opciones se utilizan para consultar las propiedades de una imagen, y otras se utilizan para alternar la forma en que debe escribirse una imagen.

ConstanteValorDescripción
QImageIOHandler::Size0El tamaño original de una imagen. Se espera que un gestor que admita esta opción lea el tamaño de la imagen de los metadatos de la imagen y devuelva este tamaño desde option() como QSize.
QImageIOHandler::ClipRect1El rectángulo de recorte o ROI (región de interés). Se espera que un controlador que admita esta opción sólo lea el área QRect proporcionada de la imagen original en read(), antes de que se aplique cualquier otra transformación.
QImageIOHandler::ScaledSize4El tamaño a escala de la imagen. Se espera que un controlador que admita esta opción escale la imagen al tamaño proporcionado (a QSize), después de aplicar cualquier transformación de rectángulo de recorte (ClipRect). Si el controlador no admite esta opción, QImageReader realizará el escalado después de leer la imagen.
QImageIOHandler::ScaledClipRect3El rectángulo de recorte escalado (o ROI, región de interés) de la imagen. Se espera que un manejador que admita esta opción aplique el rectángulo de recorte proporcionado (un QRect), después de aplicar cualquier escalado (ScaleSize) o recorte normal (ClipRect). Si el manipulador no admite esta opción, QImageReader aplicará el rectángulo de recorte escalado después de haber leído la imagen.
QImageIOHandler::Description2La descripción de la imagen. Algunos formatos de imagen, como GIF y PNG, permiten incrustar texto o comentarios en los datos de la imagen (por ejemplo, para almacenar información sobre derechos de autor). Es habitual que el texto se almacene en pares clave-valor, pero algunos formatos almacenan todo el texto en un bloque continuo. QImageIOHandler devuelve el texto como un QString, donde las claves y los valores están separados por un ':', y los pares clave-valor están separados por dos nuevas líneas (\n\n ). Por ejemplo, "Título: Puesta de sol\n\nAuthor : Jim Smith\nSarah Jones\n\n ". Los formatos que almacenan texto en un solo bloque pueden utilizar "Descripción" como clave.
QImageIOHandler::CompressionRatio5La relación de compresión de los datos de la imagen. Se espera que un manejador que soporte esta opción establezca su tasa de compresión dependiendo del valor de esta opción (un int) al escribir.
QImageIOHandler::Gamma6El nivel de gamma de la imagen. Se espera que un manejador que soporte esta opción establezca el nivel gamma de la imagen dependiendo del valor de esta opción (un float) al escribir.
QImageIOHandler::Quality7El nivel de calidad de la imagen. Se espera que un controlador que admita esta opción establezca el nivel de calidad de la imagen en función del valor de esta opción (un int) al escribir.
QImageIOHandler::Name8El nombre de la imagen. Se espera que un gestor que admita esta opción lea el nombre de los metadatos de la imagen y lo devuelva como QString, o que al escribir una imagen almacene el nombre en los metadatos de la imagen.
QImageIOHandler::SubType9El subtipo de la imagen. Un gestor que admita esta opción puede utilizar el valor del subtipo como ayuda al leer y escribir imágenes. Por ejemplo, un manejador PPM puede tener un valor de subtipo de "ppm" o "ppmraw".
QImageIOHandler::IncrementalReading10Se espera que un manejador que soporte esta opción lea la imagen en varias pasadas, como si fuera una animación. QImageReader tratará la imagen como una animación.
QImageIOHandler::Endianness11El formato de la imagen. Algunos formatos de imagen pueden almacenarse como BigEndian o LittleEndian. Un manejador que soporte Endianness utiliza el valor de esta opción para determinar cómo debe almacenarse la imagen.
QImageIOHandler::Animation12Los formatos de imagen que soportan animación devuelven true para este valor en supportsOption(); en caso contrario, se devuelve false.
QImageIOHandler::BackgroundColor13Algunos formatos de imagen permiten especificar el color de fondo. Un manejador que soporte BackgroundColor inicializa el color de fondo con esta opción (a QColor) cuando lee una imagen.
QImageIOHandler::ImageFormat14El formato de datos de la imagen devuelto por el manejador. Puede ser cualquiera de los formatos enumerados en QImage::Format.
QImageIOHandler::SupportedSubTypes15Los formatos de imagen que admiten diferentes variantes de guardado deben devolver una lista de nombres de variantes admitidas (QList<QByteArray>) en esta opción.
QImageIOHandler::OptimizedWrite16Se espera que un manejador que soporte esta opción active las banderas de optimización al escribir.
QImageIOHandler::ProgressiveScanWrite17Se espera que un gestor que admita esta opción escriba la imagen como una imagen de escaneo progresivo.
QImageIOHandler::ImageTransformation18Un manejador que soporte esta opción puede leer los metadatos de transformación de una imagen. Un manejador que soporte esta opción no debe aplicar la transformación por sí mismo.

enum QImageIOHandler::Transformation
flags QImageIOHandler::Transformaciones

Este enum describe las diferentes transformaciones u orientaciones soportadas por algunos formatos de imagen, normalmente a través de EXIF.

ConstanteValorDescripción
QImageIOHandler::TransformationNone0No se aplica ninguna transformación.
QImageIOHandler::TransformationMirror1Refleja la imagen horizontalmente.
QImageIOHandler::TransformationFlip2Reflejar la imagen verticalmente.
QImageIOHandler::TransformationRotate180TransformationMirror | TransformationFlipGirar la imagen 180 grados. Es lo mismo que reflejar la imagen horizontal y verticalmente.
QImageIOHandler::TransformationRotate904Gire la imagen 90 grados.
QImageIOHandler::TransformationMirrorAndRotate90TransformationMirror | TransformationRotate90Reflejar la imagen horizontalmente y girarla 90 grados.
QImageIOHandler::TransformationFlipAndRotate90TransformationFlip | TransformationRotate90Refleje la imagen verticalmente y luego gírela 90 grados.
QImageIOHandler::TransformationRotate270TransformationRotate180 | TransformationRotate90Gire la imagen 270 grados. Esto es lo mismo que reflejar la imagen horizontal y verticalmente y luego rotarla 90 grados.

El tipo Transformations es un typedef para QFlags<Transformation>. Almacena una combinación OR de valores de Transformación.

Ver también QImageReader::transformation(), QImageReader::setAutoTransform(), y QImageWriter::setTransformation().

Documentación de las funciones miembro

QImageIOHandler::QImageIOHandler()

Construye un objeto QImageIOHandler.

[virtual noexcept] QImageIOHandler::~QImageIOHandler()

Destruye el objeto QImageIOHandler.

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

Este es un método conveniente para la función de lectura en subclases. Los manejadores de formato de imagen deben rechazar la carga de una imagen si la asignación requerida excede el límite de asignación actual. Esta función comprueba los parámetros y el límite, y realiza la asignación si es válida y necesaria. Si se devuelve correctamente, image será un QImage válido y separado de los size y format dados.

Esta función se introdujo en Qt 6.0.

Véase también QImageReader::allocationLimit().

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

Devuelve true si se puede leer una imagen del dispositivo (es decir, el formato de imagen es compatible, se puede leer del dispositivo y la información de cabecera inicial sugiere que se puede leer la imagen); en caso contrario devuelve false.

Cuando reimplemente canRead(), asegúrese de que el dispositivo de E/S (device()) se deja en su estado original (por ejemplo, utilizando peek() en lugar de read()).

Véase también read() y QIODevice::peek().

[virtual] int QImageIOHandler::currentImageNumber() const

Para los formatos de imagen que admiten animación, esta función devuelve el número de secuencia de la imagen actual en la animación. Si se llama a esta función antes de que cualquier imagen sea read(), se devuelve -1. El número de la primera imagen de la secuencia es 0.

Si el formato de la imagen no admite animación, se devuelve 0.

Véase también read().

[virtual] QRect QImageIOHandler::currentImageRect() const

Devuelve el rectángulo de la imagen actual. Si no se define un rect para la imagen, se devuelve un QRect() vacío.

Esta función es útil para animaciones, en las que sólo se pueden actualizar partes del fotograma a la vez.

QIODevice *QImageIOHandler::device() const

Devuelve el dispositivo asignado actualmente a QImageIOHandler. Si no se ha asignado ningún dispositivo, se devuelve nullptr.

Véase también setDevice().

QByteArray QImageIOHandler::format() const

Devuelve el formato asignado actualmente a QImageIOHandler. Si no se ha asignado ningún formato, se devuelve una cadena vacía.

Véase también setFormat().

[virtual] int QImageIOHandler::imageCount() const

Para formatos de imagen que soportan animación, esta función devuelve el número de imágenes de la animación. Si el formato de imagen no soporta animación, o si es incapaz de determinar el número de imágenes, se devuelve 0.

La implementación por defecto devuelve 1 si canRead() devuelve true; en caso contrario se devuelve 0.

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

Para los formatos de imagen que admiten animación, esta función salta a la imagen cuyo número de secuencia es imageNumber. La siguiente llamada a read() intentará leer esta imagen.

La implementación por defecto no hace nada y devuelve false.

[virtual] bool QImageIOHandler::jumpToNextImage()

Para formatos de imagen que soportan animación, esta función salta a la siguiente imagen.

La implementación por defecto no hace nada y devuelve false.

[virtual] int QImageIOHandler::loopCount() const

Para formatos de imagen que soportan animación, esta función devuelve el número de veces que la animación debe repetirse. Si el formato de imagen no admite animación, se devuelve 0.

[virtual] int QImageIOHandler::nextImageDelay() const

Para formatos de imagen que soportan animación, esta función devuelve el número de milisegundos a esperar hasta leer la siguiente imagen. Si el formato de imagen no admite animación, se devuelve 0.

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

Devuelve el valor asignado a option como QVariant. El tipo del valor depende de la opción. Por ejemplo, option(Size) devuelve una variante de QSize.

Véase también setOption() y supportsOption().

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

Lee una imagen del dispositivo y la almacena en image. Devuelve true si la imagen se ha leído correctamente; en caso contrario, devuelve false.

Para formatos de imagen que soportan carga incremental, y para formatos de animación, el manejador de la imagen puede asumir que image apunta al fotograma anterior.

Véase también canRead().

void QImageIOHandler::setDevice(QIODevice *device)

Establece el dispositivo de QImageIOHandler en device. El gestor de imágenes utilizará este dispositivo cuando lea y escriba imágenes.

El dispositivo sólo puede establecerse una vez y debe hacerse antes de llamar a canRead(), read(), write(), etc. Si necesita leer múltiples archivos, construya múltiples instancias de la subclase QImageIOHandler apropiada.

Véase también device().

void QImageIOHandler::setFormat(const QByteArray &format)

Establece el formato de QImageIOHandler a format. El formato es más útil para los manejadores que admiten varios formatos de imagen.

Véase también format().

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

Establece el formato de QImageIOHandler a format. El formato es más útil para los manejadores que soportan múltiples formatos de imagen.

Esta función se declara const para que pueda ser llamada desde canRead().

Véase también format().

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

Establece la opción option con el valor value.

Véase también option() y ImageOption.

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

Devuelve true si QImageIOHandler admite la opción option; en caso contrario devuelve false. Por ejemplo, si QImageIOHandler admite la opción Size, supportsOption(Size) debe devolver true.

Véase también setOption() y option().

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

Escribe la imagen image en el dispositivo asignado. Devuelve true en caso de éxito; en caso contrario devuelve false.

La implementación por defecto no hace nada, y simplemente devuelve 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.