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.
| Constante | Valor | Descripción |
|---|---|---|
QImageIOHandler::Size | 0 | El 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::ClipRect | 1 | El 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::ScaledSize | 4 | El 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::ScaledClipRect | 3 | El 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::Description | 2 | La 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::CompressionRatio | 5 | La 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::Gamma | 6 | El 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::Quality | 7 | El 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::Name | 8 | El 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::SubType | 9 | El 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::IncrementalReading | 10 | Se 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::Endianness | 11 | El 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::Animation | 12 | Los formatos de imagen que soportan animación devuelven true para este valor en supportsOption(); en caso contrario, se devuelve false. |
QImageIOHandler::BackgroundColor | 13 | Algunos 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::ImageFormat | 14 | El formato de datos de la imagen devuelto por el manejador. Puede ser cualquiera de los formatos enumerados en QImage::Format. |
QImageIOHandler::SupportedSubTypes | 15 | Los 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::OptimizedWrite | 16 | Se espera que un manejador que soporte esta opción active las banderas de optimización al escribir. |
QImageIOHandler::ProgressiveScanWrite | 17 | Se espera que un gestor que admita esta opción escriba la imagen como una imagen de escaneo progresivo. |
QImageIOHandler::ImageTransformation | 18 | Un 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.
| Constante | Valor | Descripción |
|---|---|---|
QImageIOHandler::TransformationNone | 0 | No se aplica ninguna transformación. |
QImageIOHandler::TransformationMirror | 1 | Refleja la imagen horizontalmente. |
QImageIOHandler::TransformationFlip | 2 | Reflejar la imagen verticalmente. |
QImageIOHandler::TransformationRotate180 | TransformationMirror | TransformationFlip | Girar la imagen 180 grados. Es lo mismo que reflejar la imagen horizontal y verticalmente. |
QImageIOHandler::TransformationRotate90 | 4 | Gire la imagen 90 grados. |
QImageIOHandler::TransformationMirrorAndRotate90 | TransformationMirror | TransformationRotate90 | Reflejar la imagen horizontalmente y girarla 90 grados. |
QImageIOHandler::TransformationFlipAndRotate90 | TransformationFlip | TransformationRotate90 | Refleje la imagen verticalmente y luego gírela 90 grados. |
QImageIOHandler::TransformationRotate270 | TransformationRotate180 | TransformationRotate90 | Gire 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.