class QImageWriter#

QImageWriter为将图像写入文件或其他设备提供了一种格式无关的接口。更多...

概述#

方法#

静态函数#

注意

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

详细描述#

警告

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

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

要存储图像,您首先构造一个 QImageWriter 对象。传递文件名或设备指针,以及图像格式给 QImageWriter 的构造函数。然后您可以设置多个选项,例如质量(通过调用 setQuality())。canWrite()QImageWriter 可以写入图像(即图像格式支持并且设备已打开进行写入)时返回 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 中的错误引起的。

__init__(device, format)#
参数:

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

__init__(fileName[, format=QByteArray()])
参数:

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

__init__()

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

canWrite()#
返回类型:

bool

如果 QImageWriter 能够写入图像;即图像格式受支持且指定的设备已打开以供读取,则返回 true

compression()#
返回类型:

int

返回图像的压缩方式。

另请参阅

setCompression()

device()#
返回类型:

QIODevice

返回分配给 QImageWriter 的当前设备,或者如果尚未分配设备,则返回 None

另请参阅

setDevice()

error()#
返回类型:

ImageWriterError

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

errorString()#
返回类型:

str

返回上次发生的最后错误的易读描述。

另请参阅

error()

fileName()#
返回类型:

str

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

另请参阅

setFileName() setDevice()

format()#
返回类型:

QByteArray

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

另请参阅

setFormat()

static imageFormatsForMimeType(mimeType)#
参数:

mimeType - QByteArray

返回类型:

QByteArray 的列表

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

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

optimizedWrite()#
返回类型:

bool

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

另请参阅

setOptimizedWrite()

progressiveScanWrite()#
返回类型:

bool

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

quality()#
返回类型:

int

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

另请参阅

setQuality()

setCompression(compression)#
参数:

compression - int

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

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

另请参阅

compression()

setDevice(device)#
参数:

device - QIODevice

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

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

另请参阅

device() setFileName()

setFileName(fileName)#
参数:

fileName - 字符串

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

另请参阅

fileName() setDevice()

setFormat(format)#
参数:

format - QByteArray

警告

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

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

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

您可以通过调用 supportedImageFormats() 获取 QImageWriter 支持的所有格式列表。

另请参阅

format()

setOptimizedWrite(optimize)#
参数:

optimize – bool

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

默认为 false。

另请参阅

optimizedWrite()

setProgressiveScanWrite(progressive)#
参数:

progressive – bool

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

默认为 false。

另请参阅

progressiveScanWrite()

setQuality(quality)#
参数:

quality – int

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

某些图像格式(尤其是有损格式)需要在图像的视觉质量、编码执行时间和压缩级别之间进行权衡。此函数设置了对该权衡有支持的图像格式的级别。对于其他格式,此值被忽略。

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

另请参阅

quality()

setSubType(type)#
参数:

typeQByteArray

警告

本节包含从 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)#
参数:
  • key – str

  • text – 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)#
参数:

方向性Transformation 的组合

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

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

另请参阅

transformation() write()

subType()#
返回类型:

QByteArray

返回图像的子类型。

另请参阅

setSubType()

static supportedImageFormats()#
返回类型:

QByteArray 的列表

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

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

格式

MIME 类型

描述

BMP

image/bmp

Windows Bitmap

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 Bitmap

XPM

image/x-xpixmap

X11 Pixmap

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

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

另请参阅

setFormat() supportedImageFormats() QImageIOPlugin

static supportedMimeTypes()#
返回类型:

QByteArray 的列表

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

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

supportedSubTypes()#
返回类型:

QByteArray 的列表

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

supportsOption(option)#
参数:

optionImageOption

返回类型:

bool

警告

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

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

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

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

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

transformation()#
返回类型:

Transformation 的组合

返回图像将被设置的转换和方向。

另请参阅

setTransformation()

write(image)#
参数:

imageQImage

返回类型:

bool

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