- class QImageWriter#
类QImageWriter为将图像写入文件或其他设备提供了一种格式无关的接口。更多...
概述#
方法#
def
__init__()
def
canWrite()
def
compression()
def
device()
def
error()
def
errorString()
def
fileName()
def
format()
def
optimizedWrite()
def
quality()
def
setCompression()
def
setDevice()
定义
setFormat()
定义
setQuality()
定义
setSubType()
定义
setText()
定义
subType()
定义
write()
静态函数#
注意
此文档可能包含从 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
QImageWriter.UnknownError
发生了未知错误。如果在调用
write()
后得到此值,那么它极有可能是由于QImageWriter
中的错误引起的。
- __init__(device, format)#
- 参数:
device -
QIODevice
format -
QByteArray
使用设备
device
和图像格式format
构造一个QImageWriter
对象。- __init__(fileName[, format=QByteArray()])
- 参数:
fileName - 字符串
format -
QByteArray
构造一个将要写入名为
fileName
的文件QImageWriter
对象,使用图像格式format
。如果未提供format
,则QImageWriter
将通过检查fileName
的扩展名来自动检测图像格式。- __init__()
构建一个空的
QImageWriter
对象。在写入之前,您必须调用setFormat()
以设置图像格式,然后调用setDevice()
或setFileName()
。- canWrite()#
- 返回类型:
bool
如果
QImageWriter
能够写入图像;即图像格式受支持且指定的设备已打开以供读取,则返回true
。- compression()#
- 返回类型:
int
返回图像的压缩方式。
另请参阅
返回分配给
QImageWriter
的当前设备,或者如果尚未分配设备,则返回None
。另请参阅
- error()#
- 返回类型:
返回上次发生的错误类型。
- errorString()#
- 返回类型:
str
返回上次发生的最后错误的易读描述。
另请参阅
- fileName()#
- 返回类型:
str
如果当前分配的设备是文件,或者如果调用了
setFileName()
,则此函数返回QImageWriter
写入的文件名。否则(即如果没有分配设备或设备不是文件),返回一个空 QString。另请参阅
- format()#
- 返回类型:
返回
QImageWriter
用于写入图像的格式。另请参阅
- static imageFormatsForMimeType(mimeType)#
- 参数:
mimeType -
QByteArray
- 返回类型:
QByteArray 的列表
返回与
mimeType
对应的图像格式列表。注意,在调用此函数之前必须创建
QGuiApplication
实例。- optimizedWrite()#
- 返回类型:
bool
返回是否已开启图像写入的优化。
另请参阅
- progressiveScanWrite()#
- 返回类型:
bool
返回图像是否应作为渐进式图像写入。
- quality()#
- 返回类型:
int
返回图像格式的质量设置。
另请参阅
- setCompression(compression)#
- 参数:
compression - int
这是一个特定于图像格式的函数,用于设置图像的压缩。对于不支持设置压缩的图像格式,此值被忽略。
compression
的值范围取决于图像格式。例如,“tiff”格式支持两个值,0(无压缩)和1(LZW压缩)。另请参阅
将
QImageWriter
的设备设置为device
。如果设备已设置,则从QImageWriter
中移除旧设备,否则保持不变。如果设备尚未打开,
QImageWriter
将尝试通过调用 open() 以 QIODevice::WriteOnly 模式打开设备。请注意,这并不适用于某些设备,如 QProcess、QTcpSocket 和 QUdpSocket,在这些情况下需要更多的逻辑来打开设备。另请参阅
- setFileName(fileName)#
- 参数:
fileName - 字符串
将
QImageWriter
的文件名设置为fileName
。内部,QImageWriter
将创建一个 QFile 并以 QIODevice::WriteOnly 模式打开它,并在写入图像时使用此文件。另请参阅
- setFormat(format)#
- 参数:
format -
QByteArray
警告
本节包含从 C++ 到 Python 自动翻译的代码段,可能包含错误。
设置
QImageWriter
写入图像时使用的格式为format
。format
是不区分大小写的文本字符串。示例writer = QImageWriter() writer.setFormat("png") # same as writer.setFormat("PNG")
您可以通过调用
supportedImageFormats()
获取QImageWriter
支持的所有格式列表。另请参阅
- setOptimizedWrite(optimize)#
- 参数:
optimize – bool
这是一个特定于图像格式的函数,在写入图像时设置
optimize
标志。对于不支持设置optimize
标志的图像格式,此值被忽略。默认为 false。
另请参阅
- setProgressiveScanWrite(progressive)#
- 参数:
progressive – bool
这是一个特定于图像格式的函数,用于在写入图像时打开
progressive
扫描。对于不支持设置progressive
扫描标志的图像格式,此值被忽略。默认为 false。
- setQuality(quality)#
- 参数:
quality – int
将图像格式的质量设置为
quality
。某些图像格式(尤其是有损格式)需要在图像的视觉质量、编码执行时间和压缩级别之间进行权衡。此函数设置了对该权衡有支持的图像格式的级别。对于其他格式,此值被忽略。
quality
的值范围取决于图像格式。例如,“jpeg”格式支持从0(低视觉质量、高压缩)到100(高视觉质量、低压缩)的质量范围。另请参阅
- setSubType(type)#
- 参数:
type –
QByteArray
警告
本节包含从 C++ 到 Python 自动翻译的代码段,可能包含错误。
这是一个特定于图像格式的函数,用于将图像的类型设置为
type
。子类型可以在保存图像时由处理程序用来确定应该使用哪种格式。例如,以A8R8G8R8子类型保存DDS格式的图像
writer = QImageWriter("some/image.dds") if writer.supportsOption(QImageIOHandler.SubType): writer.setSubType("A8R8G8B8") writer.write(image)
另请参阅
- 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
实现的。- setTransformation(orientation)#
- 参数:
方向性 –
Transformation
的组合
设置图像转换元数据,包括方向性到
transform
。如果图像格式不支持转换元数据,则转换为写入之前应用。
另请参阅
- subType()#
- 返回类型:
返回图像的子类型。
另请参阅
- 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)#
- 参数:
option –
ImageOption
- 返回类型:
bool
警告
本节包含从 C++ 到 Python 自动翻译的代码段,可能包含错误。
如果写入器支持
option
,则返回true
;否则返回 false。不同的图像格式支持不同的选项。调用此函数以确定当前格式是否支持某个特定选项。例如,PNG 格式允许您将文本嵌入到图像的元数据中(参见 text())。
writer = QImageWriter(fileName) if writer.supportsOption(QImageIOHandler.Description): writer.setText("Author", "John Smith")
在将写入器与格式关联后,可以测试选项。
- transformation()#
- 返回类型:
Transformation
的组合
返回图像将被设置的转换和方向。
另请参阅
将图像
image
写入指定的设备或文件名。在成功的情况下返回true
;否则返回false
。如果操作失败,可以调用error()
以查找发生的错误类型,或者errorString()
以获取错误的人类可读描述。