PySide6.QtGui.QImageIOHandler¶
- class QImageIOHandler¶
QImageIOHandler类定义了 Qt 中所有图像格式的通用图像 I/O 接口。更多…概要¶
方法¶
def
__init__()def
device()def
format()def
setDevice()def
setFormat()
虚拟方法¶
def
canRead()def
imageCount()def
jumpToImage()def
loopCount()def
nextImageDelay()def
option()def
read()def
setOption()def
supportsOption()def
write()
静态函数¶
def
allocateImage()
注意
本文档可能包含从C++自动翻译到Python的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译问题,您也可以通过在我们的https:/bugreports.qt.io/projects/PYSIDE上创建工单来告知我们。
详细描述¶
Qt 使用
QImageIOHandler通过QImageReader和QImageWriter来读取和写入图像。你也可以从这个类派生,使用 Qt 的插件机制编写你自己的图像格式处理程序。调用
setDevice()来为处理器分配一个设备,并调用setFormat()来为其分配一个格式。一个QImageIOHandler可能支持多种图像格式。canRead()如果可以从设备读取图像,则返回true,而read()和write()如果成功完成图像的读取或写入,则返回 true。QImageIOHandler还支持动画格式,通过函数loopCount()、imageCount()、nextImageDelay()和currentImageNumber()。为了确定图像处理程序支持哪些选项,Qt 将调用
supportsOption()和setOption()。如果您能够支持ImageOption枚举中的任何选项,请确保重新实现这些函数。要编写自己的图像处理程序,您至少必须重新实现
canRead()和read()。然后创建一个可以创建处理程序的QImageIOPlugin。最后,安装您的插件,QImageReader和QImageWriter将自动加载该插件并开始使用它。另请参阅
QImageIOPluginQImageReaderQImageWriter- class ImageOption¶
此枚举描述了
QImageIOHandler支持的不同选项。一些选项用于查询图像的属性,而其他选项用于切换图像的写入方式。常量
描述
QImageIOHandler.Size
图像的原始大小。支持此选项的处理程序应从图像元数据中读取图像的大小,并从
option()返回此大小作为QSize。QImageIOHandler.ClipRect
裁剪矩形,或ROI(感兴趣区域)。支持此选项的处理程序预计在应用任何其他转换之前,仅从原始图像中读取提供的QRect区域,在
read()中。QImageIOHandler.ScaledSize
图像的缩放尺寸。支持此选项的处理程序应在应用任何裁剪矩形变换(ClipRect)后,将图像缩放到提供的大小(QSize)。如果处理程序不支持此选项,
QImageReader将在读取图像后执行缩放。QImageIOHandler.ScaledClipRect
图像的缩放裁剪矩形(或ROI,感兴趣区域)。支持此选项的处理程序应在应用任何缩放(ScaleSize)或常规裁剪(ClipRect)后应用提供的裁剪矩形(QRect)。如果处理程序不支持此选项,
QImageReader将在读取图像后应用缩放裁剪矩形。QImageIOHandler.Description
图像描述。一些图像格式,如GIF和PNG,允许将文本或评论嵌入到图像数据中(例如,用于存储版权信息)。通常,文本以键值对的形式存储,但有些格式将所有文本存储在一个连续的块中。
QImageIOHandler将文本作为一个QString返回,其中键和值由“:”分隔,键值对由两个换行符(\n\n)分隔。例如,“Title: Sunset\n\nAuthor: Jim Smith\nSarah Jones\n\n”。将文本存储在单个块中的格式可以使用“Description”作为键。QImageIOHandler.CompressionRatio
图像数据的压缩比率。支持此选项的处理程序在写入时应根据此选项的值(一个整数)设置其压缩率。
QImageIOHandler.Gamma
图像的伽马级别。支持此选项的处理程序在写入时应根据此选项的值(一个浮点数)设置图像的伽马级别。
QImageIOHandler.Quality
图像的质量级别。支持此选项的处理程序在写入时应根据此选项的值(一个整数)设置图像质量级别。
QImageIOHandler.Name
图像的名称。支持此选项的处理程序应从图像元数据中读取名称并将其作为QString返回,或者在写入图像时,应将名称存储在图像元数据中。
QImageIOHandler.SubType
图像的子类型。支持此选项的处理程序可以使用子类型值来帮助读取和写入图像。例如,PPM处理程序可能具有“ppm”或“ppmraw”的子类型值。
QImageIOHandler.IncrementalReading
支持此选项的处理程序预计会分多次读取图像,就像它是一个动画一样。
QImageReader会将图像视为动画。QImageIOHandler.Endianness
图像的字节序。某些图像格式可以存储为大端序或小端序。支持字节序的处理程序使用此选项的值来确定图像应如何存储。
QImageIOHandler.Animation
支持动画的图像格式在
supportsOption()中对此值返回true;否则返回false。QImageIOHandler.BackgroundColor
某些图像格式允许指定背景颜色。支持BackgroundColor的处理程序在读取图像时将此选项(一个
QColor)初始化为背景颜色。QImageIOHandler.ImageFormat
处理器返回的图像数据格式。这可以是
Format中列出的任何格式。QImageIOHandler.SupportedSubTypes
支持不同保存变体的图像格式应在此选项中返回支持的变体名称列表(QList
)。 QImageIOHandler.OptimizedWrite
支持此选项的处理程序在写入时应开启优化标志。
QImageIOHandler.ProgressiveScanWrite
支持此选项的处理程序应将该图像写入为渐进扫描图像。
QImageIOHandler.ImageTransformation
支持此选项的处理程序可以读取图像的转换元数据。支持此选项的处理程序不应自行应用转换。
- class Transformation¶
(继承自
enum.Flag) 此枚举描述了一些图像格式支持的不同变换或方向,通常通过EXIF实现。常量
描述
QImageIOHandler.TransformationNone
不应应用任何转换。
QImageIOHandler.TransformationMirror
水平镜像图像。
QImageIOHandler.TransformationFlip
垂直镜像图像。
QImageIOHandler.TransformationRotate180
将图像旋转180度。这与水平和垂直镜像相同。
QImageIOHandler.TransformationRotate90
将图像旋转90度。
QImageIOHandler.TransformationMirrorAndRotate90
将图像水平镜像,然后旋转90度。
QImageIOHandler.TransformationFlipAndRotate90
将图像垂直镜像,然后旋转90度。
QImageIOHandler.TransformationRotate270
将图像旋转270度。这与先水平镜像、垂直镜像,然后再旋转90度相同。
- __init__()¶
构造一个
QImageIOHandler对象。- static allocateImage(size, format, image)¶
这是一个用于子类中读取函数的便捷方法。如果所需的分配将超过当前的分配限制,图像格式处理程序必须拒绝加载图像。此函数检查参数和限制,并在有效且需要时进行分配。成功返回后,
image将是一个有效的、独立的QImage,具有给定的size和format。另请参阅
- abstract canRead()¶
- Return type:
布尔
如果可以从设备读取图像(即图像格式受支持,可以从设备读取并且初始头信息表明可以读取图像),则返回
true;否则返回false。当重新实现canRead()时,确保I/O设备(
device())保持其原始状态(例如,通过使用peek()而不是read())。- currentImageNumber()¶
- Return type:
整数
对于支持动画的图像格式,此函数返回动画中当前图像的序列号。如果在任何图像被
read()之前调用此函数,则返回-1。序列中第一张图像的编号为0。如果图像格式不支持动画,则返回0。
另请参阅
返回当前图像的矩形。如果图像没有定义矩形,则返回一个空的QRect()。
此函数对于动画非常有用,其中可能一次只更新帧的一部分。
返回当前分配给
QImageIOHandler的设备。如果没有分配设备,则返回None。另请参阅
- format()¶
- Return type:
返回当前分配给
QImageIOHandler的格式。如果尚未分配格式,则返回空字符串。另请参阅
- imageCount()¶
- Return type:
整数
对于支持动画的图像格式,此函数返回动画中的图像数量。如果图像格式不支持动画,或者无法确定图像数量,则返回0。
默认实现返回1,如果
canRead()返回true;否则返回0。- jumpToImage(imageNumber)¶
- Parameters:
imageNumber – 整数
- Return type:
布尔
对于支持动画的图像格式,此函数跳转到序列号为
imageNumber的图像。下一次调用read()将尝试读取此图像。默认实现不执行任何操作,并返回
false。- jumpToNextImage()¶
- Return type:
布尔
对于支持动画的图像格式,此函数跳转到下一张图像。
默认实现不执行任何操作,并返回
false。- loopCount()¶
- Return type:
整数
对于支持动画的图像格式,此函数返回动画应循环的次数。如果图像格式不支持动画,则返回0。
- nextImageDelay()¶
- Return type:
整数
对于支持动画的图像格式,此函数返回等待读取下一张图像的毫秒数。如果图像格式不支持动画,则返回0。
- option(option)¶
- Parameters:
选项 –
ImageOption- Return type:
对象
返回分配给
option的值作为QVariant。值的类型取决于选项。例如,option(Size)返回一个QSize变体。从设备读取图像,并将其存储在
image中。如果图像成功读取,则返回true;否则返回false。对于支持增量加载的图像格式以及动画格式,图像处理程序可以假设
image指向前一帧。另请参阅
将
QImageIOHandler的设备设置为device。图像处理器在读取和写入图像时将使用此设备。设备只能设置一次,并且必须在调用
canRead()、read()、write()等之前设置。如果需要读取多个文件,请构造适当的QImageIOHandler子类的多个实例。另请参阅
- setFormat(format)¶
- Parameters:
format –
QByteArray
设置
QImageIOHandler的格式为format。该格式对于支持多种图像格式的处理程序最为有用。此函数被声明为const,以便可以从
canRead()调用。另请参阅
- setOption(option, value)¶
- Parameters:
选项 –
ImageOptionvalue – 对象
设置选项
option的值为value。另请参阅
- supportsOption(option)¶
- Parameters:
选项 –
ImageOption- Return type:
布尔
如果
QImageIOHandler支持选项option,则返回true;否则返回false。例如,如果QImageIOHandler支持Size选项,supportsOption(Size)必须返回true。另请参阅
将图像
image写入指定的设备。成功时返回true;否则返回false。默认实现不执行任何操作,并简单地返回
false。