PySide6.QtGui.QImageWriter

class QImageWriter

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

概要

方法

静态函数

注意

本文档可能包含从C++自动翻译到Python的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译问题,您也可以通过在我们的https:/bugreports.qt.io/projects/PYSIDE上创建工单来告知我们。

详细描述

警告

本节包含从C++自动翻译到Python的代码片段,可能包含错误。

QImageWriter 支持在存储图像之前设置特定格式的选项,例如压缩级别和质量。如果您不需要这些选项,可以使用 QImage::save() 或 save() 代替。

要存储图像,首先需要构造一个QImageWriter对象。将文件名或设备指针以及图像格式传递给QImageWriter的构造函数。然后可以设置几个选项,例如质量(通过调用setQuality())。如果QImageWriter可以写入图像(即图像格式受支持且设备已打开以进行写入),则canWrite()返回true。调用write()将图像写入设备。

如果在写入图像时发生任何错误,write() 将返回 false。然后您可以调用 error() 来查找发生的错误类型,或者调用 errorString() 来获取人类可读的错误描述。

调用supportedImageFormats()以获取QImageWriter可以写入的格式列表。QImageWriter支持所有内置图像格式,以及任何支持写入的图像格式插件。

注意

QImageWriter 假设对分配的文件或设备拥有独占控制权。在 QImageWriter 对象的生命周期内,任何尝试修改分配的文件或设备的行为都将产生未定义的结果。如果需要立即访问资源,建议使用作用域的方法。

例如:

imagePath = QString("path/image.jpeg")
image = QImage(64, 64, QImage.Format_RGB32)
image.fill(Qt.red)

    writer = QImageWriter(imagePath)
    writer.write(image)

QFile.rename(imagePath,
              "path/other_image.jpeg")

另请参阅

QImageReader QImageIOHandler QImageIOPlugin QColorSpace

class ImageWriterError

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

常量

描述

QImageWriter.DeviceError

QImageWriter 在写入图像数据时遇到设备错误。请咨询您的设备以获取更多关于错误的详细信息。

QImageWriter.UnsupportedFormatError

Qt不支持请求的图像格式。

QImageWriter.InvalidImageError

尝试写入无效的QImage。无效图像的示例是空的QImage

QImageWriter.UnknownError

发生了一个未知错误。如果在调用write()后得到这个值,很可能是由QImageWriter中的一个bug引起的。

__init__()

构造一个空的QImageWriter对象。在写入之前,您必须调用setFormat()来设置图像格式,然后调用setDevice()setFileName()

__init__(device, format)
Parameters:

使用设备 device 和图像格式 format 构造一个 QImageWriter 对象。

__init__(fileName[, format=QByteArray()])
Parameters:

构造一个QImageWriter对象,该对象将使用图像格式format写入名为fileName的文件。如果未提供formatQImageWriter将通过检查fileName的扩展名来检测图像格式。

canWrite()
Return type:

布尔

如果QImageWriter可以写入图像,则返回true;即,图像格式受支持且分配的设备已打开以供读取。

compression()
Return type:

整数

返回图像的压缩。

另请参阅

setCompression()

device()
Return type:

QIODevice

返回当前分配给QImageWriter的设备,如果没有分配设备,则返回None

另请参阅

setDevice()

error()
Return type:

ImageWriterError

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

errorString()
Return type:

字符串

返回最近发生的错误的人类可读描述。

另请参阅

error()

fileName()
Return type:

字符串

如果当前分配的设备是一个文件,或者已经调用了setFileName(),此函数将返回QImageWriter写入的文件名。否则(即,如果没有分配设备或设备不是文件),则返回一个空的QString。

另请参阅

setFileName() setDevice()

format()
Return type:

QByteArray

返回QImageWriter用于写入图像的格式。

另请参阅

setFormat()

static imageFormatsForMimeType(mimeType)
Parameters:

mimeTypeQByteArray

Return type:

.list of QByteArray

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

请注意,在调用此函数之前,必须创建QGuiApplication实例。

optimizedWrite()
Return type:

布尔

返回是否已开启优化以写入图像。

另请参阅

setOptimizedWrite()

progressiveScanWrite()
Return type:

布尔

返回图像是否应作为渐进式图像写入。

quality()
Return type:

整数

返回图像格式的质量设置。

另请参阅

setQuality()

setCompression(compression)
Parameters:

compression – int

这是一个特定于图像格式的函数,用于设置图像的压缩。对于不支持设置压缩的图像格式,此值将被忽略。

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

另请参阅

compression()

setDevice(device)
Parameters:

设备QIODevice

QImageWriter的设备设置为device。如果已经设置了设备,旧设备将从QImageWriter中移除,否则保持不变。

如果设备尚未打开,QImageWriter 将尝试通过调用 open() 以 QIODevice::WriteOnly 模式打开设备。请注意,这不适用于某些设备,如 QProcess、QTcpSocket 和 QUdpSocket,这些设备需要更多的逻辑来打开。

另请参阅

device() setFileName()

setFileName(fileName)
Parameters:

fileName – str

QImageWriter的文件名设置为fileName。在内部,QImageWriter将创建一个QFile并以QIODevice::WriteOnly模式打开它,并在写入图像时使用此文件。

另请参阅

fileName() setDevice()

setFormat(format)
Parameters:

formatQByteArray

警告

本节包含从C++自动翻译到Python的代码片段,可能包含错误。

设置QImageWriter在写入图像时将使用的格式为formatformat是一个不区分大小写的文本字符串。示例:

writer = QImageWriter()
writer.setFormat("png") # same as writer.setFormat("PNG")

你可以调用supportedImageFormats()来获取QImageWriter支持的所有格式的完整列表。

另请参阅

format()

setOptimizedWrite(optimize)
Parameters:

optimize – 布尔值

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

默认值为 false。

另请参阅

optimizedWrite()

setProgressiveScanWrite(progressive)
Parameters:

progressive – 布尔值

这是一个特定于图像格式的函数,它在写入图像时启用progressive扫描。对于不支持设置progressive扫描标志的图像格式,此值将被忽略。

默认值为 false。

另请参阅

progressiveScanWrite()

setQuality(quality)
Parameters:

质量 – int

将图像格式的质量设置设置为 quality

一些图像格式,特别是有损格式,需要在a) 生成图像的视觉质量和b) 编码执行时间和压缩级别之间进行权衡。此函数为支持此功能的图像格式设置该权衡的级别。对于其他格式,此值将被忽略。

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

另请参阅

quality()

setSubType(type)
Parameters:

类型QByteArray

警告

本节包含从C++自动翻译到Python的代码片段,可能包含错误。

这是一个特定于图像格式的函数,它将图像的子类型设置为type。子类型可以被处理程序用来确定在保存图像时应使用哪种格式。

例如,以A8R8G8R8子类型保存DDS格式的图像:

writer = QImageWriter("some/image.dds")
if writer.supportsOption(QImageIOHandler.SubType):
    writer.setSubType("A8R8G8B8")
writer.write(image)

另请参阅

subType()

setText(key, text)
Parameters:
  • key – str

  • 文本 – str

警告

本节包含从C++自动翻译到Python的代码片段,可能包含错误。

将与键key关联的图像文本设置为text。这对于存储版权信息或其他关于图像的信息非常有用。示例:

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

如果你想存储单个数据块(例如,评论),你可以传递一个空键,或者使用像“描述”这样的通用键。

调用write()后,键和文本将被嵌入到图像数据中。

对此选项的支持是通过Description实现的。

另请参阅

setText() text()

setTransformation(orientation)
Parameters:

orientationTransformation 的组合

设置图像变换元数据,包括方向到transform

如果图像格式不支持转换元数据,则在写入之前应用转换。

另请参阅

transformation() write()

subType()
Return type:

QByteArray

返回图像的子类型。

另请参阅

setSubType()

static supportedImageFormats()
Return type:

.list of QByteArray

返回由QImageWriter支持的图像格式列表。

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

格式

MIME类型

描述

BMP

image/bmp

Windows 位图

JPG

image/jpeg

联合图像专家组

PNG

image/png

便携式网络图形

PBM

image/x-portable-bitmap

便携式位图

PGM

image/x-portable-graymap

便携式灰度图

PPM

image/x-portable-pixmap

便携式像素图

XBM

image/x-xbitmap

X11 位图

XPM

image/x-xpixmap

X11 位图

通过Qt SVG模块支持读取和写入SVG文件。Qt图像格式模块提供了对额外图像格式的支持。

请注意,必须在调用此函数之前创建QApplication实例。

另请参阅

setFormat() supportedImageFormats() QImageIOPlugin

static supportedMimeTypes()
Return type:

.list of QByteArray

返回由QImageWriter支持的MIME类型列表。

请注意,必须在调用此函数之前创建QApplication实例。

supportedSubTypes()
Return type:

.list of QByteArray

返回图像支持的子类型列表。

supportsOption(option)
Parameters:

选项ImageOption

Return type:

布尔

警告

本节包含从C++自动翻译到Python的代码片段,可能包含错误。

如果写入器支持option,则返回true;否则返回false。

不同的图像格式支持不同的选项。调用此函数以确定当前格式是否支持某个选项。例如,PNG格式允许你将文本嵌入图像的元数据中(参见text())。

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

选项可以在写入器与格式关联后进行测试。

transformation()
Return type:

Transformation的组合

返回图像已被设置为写入的变换和方向。

另请参阅

setTransformation()

write(image)
Parameters:

图像QImage

Return type:

布尔

将图像 image 写入指定的设备或文件名。成功时返回 true;否则返回 false。如果操作失败,您可以调用 error() 来查找发生的错误类型,或者调用 errorString() 来获取错误的可读描述。