QImageWriter Class
La clase QImageWriter proporciona una interfaz independiente del formato para escribir imágenes en archivos u otros dispositivos. Más...
| Cabecera: | #include <QImageWriter> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Gui)target_link_libraries(mytarget PRIVATE Qt6::Gui) |
| qmake: | QT += gui |
- Lista de todos los miembros, incluyendo los heredados
- QImageWriter es parte de Clases de Pintura.
Nota: Todas las funciones de esta clase son reentrantes.
Tipos Públicos
| enum | ImageWriterError { DeviceError, UnsupportedFormatError, InvalidImageError, UnknownError } |
Funciones Públicas
| 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) |
Miembros Públicos Estáticos
| QList<QByteArray> | imageFormatsForMimeType(const QByteArray &mimeType) |
| QList<QByteArray> | supportedImageFormats() |
| QList<QByteArray> | supportedMimeTypes() |
Descripción Detallada
QImageWriter soporta la configuración de opciones específicas de formato, como el nivel de compresión y la calidad, antes de almacenar la imagen. Si no necesita estas opciones, puede utilizar QImage::save() o QPixmap::save() en su lugar.
Para almacenar una imagen, se empieza por construir un objeto QImageWriter. Pasa un nombre de archivo o un puntero de dispositivo, y el formato de la imagen al constructor de QImageWriter. A continuación, puede establecer varias opciones, como la calidad (llamando a setQuality()). canWrite() devuelve true si QImageWriter puede escribir la imagen (es decir, el formato de imagen es compatible y el dispositivo está abierto para la escritura). Llame a write() para escribir la imagen en el dispositivo.
Si se produce algún error al escribir la imagen, write() devolverá false. A continuación, puede llamar a error() para averiguar el tipo de error que se ha producido, o a errorString() para obtener una descripción legible por humanos de lo que ha ido mal.
Llame a supportedImageFormats() para obtener una lista de formatos que QImageWriter puede escribir. QImageWriter soporta todos los formatos de imagen incorporados, además de cualquier plugin de formato de imagen que soporte escritura.
Nota: QImageWriter asume control exclusivo sobre el archivo o dispositivo asignado. Cualquier intento de modificar el archivo o dispositivo asignado durante la vida del objeto QImageWriter producirá resultados indefinidos. Si se desea acceso inmediato a un recurso, el método recomendado es el uso de un scope.
Por ejemplo:
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"));
Véase también QImageReader, QImageIOHandler, QImageIOPlugin, y QColorSpace.
Documentación de tipos de miembros
enum QImageWriter::ImageWriterError
Este enum describe los errores que pueden producirse al escribir imágenes con QImageWriter.
| Constante | Valor | Descripción |
|---|---|---|
QImageWriter::DeviceError | 1 | QImageWriter ha encontrado un error de dispositivo al escribir los datos de la imagen. Consulte su dispositivo para obtener más detalles sobre lo que salió mal. |
QImageWriter::UnsupportedFormatError | 2 | Qt no soporta el formato de imagen solicitado. |
QImageWriter::InvalidImageError | 3 | Se ha intentado escribir una imagen no válida QImage. Un ejemplo de imagen no válida sería una imagen nula QImage. |
QImageWriter::UnknownError | 0 | Se ha producido un error desconocido. Si obtiene este valor después de llamar a write(), lo más probable es que esté causado por un error en QImageWriter. |
Documentación de funciones miembro
QImageWriter::QImageWriter()
Construye un objeto QImageWriter vacío. Antes de escribir, debe llamar a setFormat() para establecer un formato de imagen y, a continuación, a setDevice() o setFileName().
[explicit] QImageWriter::QImageWriter(QIODevice *device, const QByteArray &format)
Construye un objeto QImageWriter utilizando el dispositivo device y el formato de imagen format.
[explicit] QImageWriter::QImageWriter(const QString &fileName, const QByteArray &format = QByteArray())
Construye un objeto QImageWriter que escribirá en un archivo con el nombre fileName, utilizando el formato de imagen format. Si no se proporciona format, QImageWriter detectará el formato de imagen inspeccionando la extensión de fileName.
[noexcept] QImageWriter::~QImageWriter()
Destruye el objeto QImageWriter.
bool QImageWriter::canWrite() const
Devuelve true si QImageWriter puede escribir la imagen; es decir, el formato de imagen es compatible y el dispositivo asignado está abierto para la lectura.
Véase también write(), setDevice() y setFormat().
int QImageWriter::compression() const
Devuelve la compresión de la imagen.
Véase también setCompression().
QIODevice *QImageWriter::device() const
Devuelve el dispositivo actualmente asignado a QImageWriter, o nullptr si no se ha asignado ningún dispositivo.
Véase también setDevice().
QImageWriter::ImageWriterError QImageWriter::error() const
Devuelve el tipo de error que se produjo por última vez.
Véase también ImageWriterError y errorString().
QString QImageWriter::errorString() const
Devuelve una descripción legible por humanos del último error que se ha producido.
Véase también error().
QString QImageWriter::fileName() const
Si el dispositivo actualmente asignado es un archivo, o si se ha llamado a setFileName(), esta función devuelve el nombre del archivo en el que QImageWriter escribe. En caso contrario (es decir, si no se ha asignado ningún dispositivo o el dispositivo no es un archivo), se devuelve un QString vacío.
Véase también setFileName() y setDevice().
QByteArray QImageWriter::format() const
Devuelve el formato que utiliza QImageWriter para escribir imágenes.
Véase también setFormat().
[static] QList<QByteArray> QImageWriter::imageFormatsForMimeType(const QByteArray &mimeType)
Devuelve la lista de formatos de imagen correspondientes a mimeType.
Tenga en cuenta que la instancia QGuiApplication debe crearse antes de llamar a esta función.
Véase también supportedImageFormats() y supportedMimeTypes().
bool QImageWriter::optimizedWrite() const
Devuelve si se ha activado la optimización para escribir la imagen.
Véase también setOptimizedWrite().
bool QImageWriter::progressiveScanWrite() const
Devuelve si la imagen debe escribirse como una imagen progresiva.
Véase también setProgressiveScanWrite().
int QImageWriter::quality() const
Devuelve la configuración de calidad del formato de imagen.
Véase también setQuality().
void QImageWriter::setCompression(int compression)
Esta es una función específica del formato de imagen que establece la compresión de una imagen. Para los formatos de imagen que no admiten el ajuste de la compresión, este valor se ignora.
El rango de valores de compression depende del formato de imagen. Por ejemplo, el formato "tiff" admite dos valores, 0(sin compresión) y 1(compresión LZW).
Véase también compression().
void QImageWriter::setDevice(QIODevice *device)
Establece el dispositivo de QImageWriter en device. Si ya se ha establecido un dispositivo, el dispositivo antiguo se elimina de QImageWriter y, de lo contrario, se deja sin cambios.
Si el dispositivo aún no está abierto, QImageWriter intentará abrir el dispositivo en modo QIODeviceBase::WriteOnly llamando a open(). Tenga en cuenta que esto no funciona para ciertos dispositivos, como QProcess, QTcpSocket y QUdpSocket, donde se requiere más lógica para abrir el dispositivo.
Véase también device() y setFileName().
void QImageWriter::setFileName(const QString &fileName)
Establece el nombre de archivo de QImageWriter en fileName. Internamente, QImageWriter creará un QFile y lo abrirá en modo QIODevice::WriteOnly, y utilizará este archivo al escribir imágenes.
Véase también fileName() y setDevice().
void QImageWriter::setFormat(const QByteArray &format)
Establece el formato que utilizará QImageWriter al escribir imágenes, en format. format es una cadena de texto que no distingue mayúsculas de minúsculas. Ejemplo:
QImageWriter writer; writer.setFormat("png"); // same as writer.setFormat("PNG");
Puede llamar a supportedImageFormats() para obtener la lista completa de formatos que admite QImageWriter.
Véase también format().
void QImageWriter::setOptimizedWrite(bool optimize)
Esta es una función específica del formato de imagen que establece las banderas optimize al escribir imágenes. Para los formatos de imagen que no admiten el establecimiento de un indicador optimize, este valor se ignora.
El valor por defecto es false.
Véase también optimizedWrite().
void QImageWriter::setProgressiveScanWrite(bool progressive)
Se trata de una función específica del formato de imagen que activa el escaneado progressive al escribir imágenes. Para los formatos de imagen que no admiten la configuración de un indicador de exploración progressive, este valor se ignora.
El valor predeterminado es false.
Véase también progressiveScanWrite().
void QImageWriter::setQuality(int quality)
Establece la configuración de calidad del formato de imagen en quality.
Algunos formatos de imagen, en particular los de pérdida, implican un compromiso entre a) la calidad visual de la imagen resultante y b) el tiempo de ejecución de la codificación y el nivel de compresión. Esta función establece el nivel de ese compromiso para los formatos de imagen que lo admiten. Para otros formatos, este valor se ignora.
El rango de valores de quality depende del formato de imagen. Por ejemplo, el formato "jpeg" admite un rango de calidad de 0 (baja calidad visual, alta compresión) a 100 (alta calidad visual, baja compresión).
Véase también quality().
void QImageWriter::setSubType(const QByteArray &type)
Esta es una función específica del formato de imagen que establece el subtipo de la imagen en type. El subtipo puede ser utilizado por un manejador para determinar qué formato debe utilizar al guardar la imagen.
Por ejemplo, guardar una imagen en formato DDS con el subtipo A8R8G8R8:
QImageWriter writer("some/image.dds"); if (writer.supportsOption(QImageIOHandler::SubType)) writer.setSubType("A8R8G8B8"); writer.write(image);
Véase también subType().
void QImageWriter::setText(const QString &key, const QString &text)
Establece el texto de la imagen asociado a la clave key en text. Esto es útil para almacenar información sobre derechos de autor u otra información sobre la imagen. Ejemplo:
QImage image("some/image.jpeg"); QImageWriter writer("images/outimage.png", "png"); writer.setText("Author", "John Smith"); writer.write(image);
Si desea almacenar un único bloque de datos (por ejemplo, un comentario), puede pasar una clave vacía o utilizar una clave genérica como "Descripción".
La clave y el texto se incrustarán en los datos de la imagen después de llamar a write().
Esta opción es compatible con QImageIOHandler::Description.
Véase también QImage::setText() y QImageReader::text().
void QImageWriter::setTransformation(QImageIOHandler::Transformations transform)
Establece los metadatos de transformación de la imagen, incluida la orientación, en transform.
Si el formato de imagen no admite metadatos de transformación, la transformación se aplica antes de escribir.
Véase también transformation() y write().
QByteArray QImageWriter::subType() const
Devuelve el subtipo de la imagen.
Véase también setSubType().
[static] QList<QByteArray> QImageWriter::supportedImageFormats()
Devuelve la lista de formatos de imagen soportados por QImageWriter.
Por defecto, Qt puede escribir los siguientes formatos:
| Formato | Tipo MIME | Descripción |
|---|---|---|
| BMP | imagen/bmp | Mapa de bits de Windows |
| JPG | imagen/jpeg | Grupo Conjunto de Expertos en Fotografía |
| PNG | imagen/png | Gráficos de red portátiles |
| PBM | imagen/x-portable-bitmap | Mapa de bits portátil |
| PGM | image/x-portable-graymap | Mapa de grises portátil |
| PPM | image/x-portable-pixmap | Mapa de píxeles portátil |
| XBM | image/x-xbitmap | Mapa de bits X11 |
| XPM | imagen/x-xpixmap | Mapa de píxeles X11 |
La lectura y escritura de archivos SVG se realiza a través del módulo Qt SVG módulo. El módulo Qt Image Formats ofrece soporte para otros formatos de imagen.
Tenga en cuenta que la instancia QApplication debe crearse antes de llamar a esta función.
Véase también setFormat(), QImageReader::supportedImageFormats(), y QImageIOPlugin.
[static] QList<QByteArray> QImageWriter::supportedMimeTypes()
Devuelve la lista de tipos MIME soportados por QImageWriter.
Tenga en cuenta que la instancia QApplication debe crearse antes de llamar a esta función.
Véase también supportedImageFormats() y QImageReader::supportedMimeTypes().
QList<QByteArray> QImageWriter::supportedSubTypes() const
Devuelve la lista de subtipos admitidos por una imagen.
bool QImageWriter::supportsOption(QImageIOHandler::ImageOption option) const
Devuelve true si el escritor soporta option; en caso contrario devuelve false.
Diferentes formatos de imagen soportan diferentes opciones. Llame a esta función para determinar si una determinada opción es compatible con el formato actual. Por ejemplo, el formato PNG permite incrustar texto en los metadatos de la imagen (véase text()).
QImageWriter writer(fileName); if (writer.supportsOption(QImageIOHandler::Description)) writer.setText("Author", "John Smith");
Las opciones pueden comprobarse después de haber asociado el escritor a un formato.
Véase también QImageReader::supportsOption() y setFormat().
QImageIOHandler::Transformations QImageWriter::transformation() const
Devuelve la transformación y la orientación con las que se ha escrito la imagen.
Véase también setTransformation().
bool QImageWriter::write(const QImage &image)
Escribe la imagen image en el dispositivo o nombre de archivo asignado. Devuelve true en caso de éxito; en caso contrario devuelve false. Si la operación falla, puede llamar a error() para averiguar el tipo de error que se ha producido, o a errorString() para obtener una descripción legible del error.
Véase también canWrite(), error() y 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.