1.简介
QImageWriter
用于写入图像文件的类。它提供了将 QImage
对象保存到不同图像格式文件的功能,包括但不限于 PNG、JPEG、BMP 等。QImageWriter
可以将图像写入文件,也可以写入任何 QIODevice
,如 QByteArray
,这使得它非常灵活。
主要特点:
- 格式支持: 支持多种图像格式,并且可以指定写入的图像格式。
- 写入控制: 可以通过指定大小、质量、压缩比等选项来控制写入过程。
- 错误处理: 提供了错误处理机制,可以捕获和处理写入过程中的错误。
- 元数据支持: 可以设置图像的元数据,如分辨率、注释等信息。
2.常用接口介绍
canWrite()
:判断是否能够写入图像。write()
:将QImage
对象写入文件或设备。setFormat()
:设置写入的图像格式。setQuality()
:对于支持质量设置的图像格式(如 JPEG),设置图像质量。setCompression()
:对于支持压缩设置的图像格式(如 PNG),设置图像压缩级别。errorString()
:获取错误的字符串描述。
3.示例
#include "widget.h"
#include "ui_widget.h"
#include <QFile>
#include <QImageReader>
#include <QImageWriter>
#include <QDebug>
#include <QFileDialog>QImage g_image; //全局的Widget::Widget(QWidget *parent) :QWidget(parent),ui(new Ui::Widget)
{ui->setupUi(this);
}Widget::~Widget()
{delete ui;
}void Widget::on_pushButton_clicked()
{QString fileName = QFileDialog::getOpenFileName(this,tr("Open Image"), "D:/", tr("Image Files (*.png *.jpg *.bmp *.jpeg)"));if(fileName.isEmpty())return;QFile file(fileName);file.open(QIODevice::ReadOnly);QImageReader reader(&file);if (!reader.canRead()){qDebug() << "Cannot read the image";return;}g_image = reader.read();if (g_image.isNull()){qDebug() << "Failed to read the image:" << reader.errorString();return;}ui->lbImage->setPixmap(QPixmap::fromImage(g_image));
}void Widget::on_pushButton_2_clicked()
{if (g_image.isNull()){qDebug() << "image is null";return;}QFile file("./test.jpg");file.open(QIODevice::WriteOnly);QImageWriter writer(&file, "jpg");writer.setQuality(85); // 设置 JPEG 图像质量为 85%if (!writer.write(g_image)){qDebug() << "Failed to write the image:" << writer.errorString();return;}
}
4.更多参考
libVLC 专栏介绍-CSDN博客
Qt+FFmpeg+opengl从零制作视频播放器-1.项目介绍_qt opengl视频播放器-CSDN博客
QCharts -1.概述-CSDN博客
Qt QImageReader类介绍-CSDN博客