QImageWriter

QImageWriter提供了一种接口,用于将图像以不同格式写入文件,支持设置压缩级别、质量等选项。在写入过程中,确保对文件的独占控制,同时可以检查支持的格式和选项,以及写入状态。错误处理包括设备错误、格式不支持、无效图像等。此外,还可以添加图像元数据如作者信息,以及设置优化和逐行扫描标志。
摘要由CSDN通过智能技术生成

一、描述

QImageWriter 类提供了一个独立于格式的接口,用于将图像写入文件或其他设备。

QImageWriter 支持在存储图像之前设置格式特定选项,例如压缩级别和质量。如果不需要这些选项,那不应该使用此类而是使用 QImage::save() 或 QPixmap::save()。

QImageWriter 假定对分配的文件或设备具有独占控制权。在 QImageWriter 对象的生命周期内修改分配的文件或设备的任何尝试都将产生未定义的结果。

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"));

二、类型成员

1、enum QImageWriter::ImageWriterError:此枚举描述了使用 QImageWriter 写入图像时可能发生的错误。

  • DeviceError:在写入图像数据时遇到设备错误。
  • UnsupportedFormatError:Qt 不支持请求的图像格式。
  • InvalidImageError:试图写入一个无效的 QImage
  • UnknownError:发生未知错误。

三、成员函数

1、bool canWrite()

是否可以写入图像,即支持图像格式并且分配的设备已打开可供读取。

2、QImageWriter::ImageWriterError error()

返回上次发生的错误类型。

3、QString errorString()

返回发生的最后一个错误的描述。

4、【static】QList<QByteArray> imageFormatsForMimeType(const QByteArray &mimeType)

返回与 mimeType 对应的图像格式列表。

和 QImageReader::imageFormatsForMimeType() 一样。

5、void setCompression(int compression)

设置图像压缩格式特定功能。对于不支持设置压缩的图像格式,此值将被忽略。

compression 的取值范围取决于图像格式。例如,“tiff”格式支持两个值,0(无压缩)和 1(LZW 压缩)。

6、void setDevice(QIODevice *device)

设置设备。如果设备尚未打开,则将尝试通过调用 open() 以 WriteOnly 模式打开设备。

7、void setFileName(const QString &fileName)

设置文件名。在内部,会创建一个 QFile 并以 WriteOnly 模式打开它,并在写入图像时使用该文件。

8、void setFormat(const QByteArray &format)

设置在写入图像时将使用的格式,以格式化。format 是不区分大小写的文本字符串。 

9、void setOptimizedWrite(bool optimize)

这是一个特定于图像格式的函数,在写入图像时设置优化标志。对于不支持设置优化标志的图像格式,此值将被忽略。默认值为 false。

10、void setProgressiveScanWrite(bool progressive)

这是一个特定于图像格式的功能,在写入图像时打开逐行扫描。对于不支持设置逐行扫描标志的图像格式,该值将被忽略。默认值为 false。

11、void setQuality(int quality)

设置图像质量。

一些图像格式,尤其是有损图像格式,需要在 “结果图像的视觉质量”和 “编码执行时间和压缩级别”之间进行权衡。此函数设置支持它的图像格式的权衡级别。对于其他格式,此值将被忽略。

质量的取值范围取决于图像格式。例如,“jpeg”格式支持从 0(低视觉质量,高压缩)到 100(高视觉质量,低压缩)的质量范围。

12、void setText(const QString &key, const QString &text)

将与 key 关联的图像文本设置为 text。

例如用于存储版权信息:

QImage image("some/image.jpeg");
QImageWriter writer("images/outimage.png", "png");
writer.setText("Author", "John Smith");
writer.write(image);

13、void setTransformation(QImageIOHandler::Transformations transform)

设置图像转换元数据。见这个

14、【static】QList<QByteArray> supportedImageFormats()

返回支持的图像格式列表。必须在调用此函数之前创建 QApplication 实例。

默认情况下,可以写入以下格式:

15、【static】QList<QByteArray> supportedMimeTypes()

返回支持的 MIME 类型列表。必须在调用此函数之前创建 QApplication 实例。

16、bool supportsOption(QImageIOHandler::ImageOption option)

是否支持选项。

不同的图像格式支持不同的选项。调用该函数来判断当前格式是否支持某个选项。

QImageWriter writer(fileName);
if (writer.supportsOption(QImageIOHandler::Description))
    writer.setText("Author", "John Smith");

17、bool write(const QImage &image)

将图像写入分配的设备或文件名。返回是否写入成功。如果操作失败,可以调用 error() 来查找发生的错误类型,或者调用 errorString() 来获取错误描述。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值