- class QImageIOHandler#
类
QImageIOHandler
定义了Qt中所有图像格式通用的图像I/O接口。更多信息...概述#
方法#
def
__init__()
def
device()
def
format()
def
setDevice()
def
setFormat()
虚方法#
def
canRead()
def
currentImageNumber()
def
currentImageRect()
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
将自动加载插件,并开始使用它。另请参阅
QImageIOPlugin
QImageReader
QImageWriter
- 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
图像数据的压缩比。支持此选项的处理程序预期在写入时会根据此选项(int)的值设置其压缩率。
QImageIOHandler.Gamma
图像的gamma级别。支持此选项的处理程序预期在写入时会根据此选项(float)的值设置图像gamma级别。
QImageIOHandler.Quality
图像的质量级别。支持此选项的处理程序预期在写入时会根据此选项(int)的值设置图像质量级别。
QImageIOHandler.Name
图像的名称。支持此选项的处理程序预期会从图像元数据中读取名称并将其作为QString返回,或当写入图像时预计会存储名称到图像元数据中。
QImageIOHandler.SubType
图像的子类型。支持此选项的处理程序可以使用子类型值在读取和写入图像时帮助。例如,PPM处理程序可能具有“ppm”或“ppmraw”的子类型值。
QImageIOHandler.IncrementalReading
支持此选项的处理程序预期会分几步读取图像,就像它是动画一样。
QImageReader
会将图像视为动画。QImageIOHandler.Endianness
图像的存储顺序。某些图像格式可以是BigEndian或LittleEndian。支持Endianness的处理程序使用此选项的值来确定图像应如何存储。
QImageIOHandler.Animation
支持动画的图像格式在
supportsOption()
中返回true值,否则返回false。QImageIOHandler.BackgroundColor
某些图像格式允许指定背景颜色。支持BackgroundColor的处理程序在读取图像时将此选项(一个
QColor
)初始化为背景颜色。QImageIOHandler.ImageFormat
处理程序返回的图像数据格式。这可以是
Format
中列出的任何格式。QImageIOHandler.SupportedSubTypes
支持不同保存变体的图像格式应在此选项中返回支持的变体名称列表(QList<QByteArray>)。
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
。另请参阅
- 抽象 canRead()#
- 返回类型::
bool
如果可以从设备中读取图像(即,图像格式受支持,设备可读取,并且初始头信息表明可以读取图像),则返回
true
;否则返回false
。当重新实现 canRead() 时,请确保 I/O 设备(
device()
)处于其原始状态(例如,通过使用 peek() 而不是read()
)。- currentImageNumber()#
- 返回类型::
int
对于支持动画的图像格式,此函数返回动画中当前图像的序列号。如果在调用此函数之前没有任何图像被
read()
,则返回 -1。序列中第一张图像的编号为 0。如果图像格式不支持动画,则返回 0。
另请参阅
返回当前图像的矩形。如果没有为图像定义矩形,则返回空的 QRect()。
此函数对于动画很有用,其中一次只能更新帧的一部分。
返回当前分配给
QImageIOHandler
的设备。如果没有分配任何设备,则返回None
。另请参阅
- 格式()#
- 返回类型::
返回当前分配给
QImageIOHandler
的格式。如果未分配格式,则返回空字符串。另请参阅
- imageCount()#
- 返回类型::
int
对于支持动画的图像格式,此函数返回动画中图像的数量。如果图像格式不支持动画或无法确定图像数量,则返回0。
默认实现如果
canRead()
返回true
,则返回1;否则返回0。- jumpToImage(imageNumber)#
- 参数:
imageNumber – int
- 返回类型::
bool
对于支持动画的图像格式,此函数跳转到序列号为
imageNumber
的图像。下一次调用read()
将尝试读取此图像。默认实现不执行任何操作,并返回
false
。- jumpToNextImage()#
- 返回类型::
bool
对于支持动画的图像格式,此函数跳转到下一张图像。
默认实现不执行任何操作,并返回
false
。- loopCount()#
- 返回类型::
int
对于支持动画的图像格式,此函数返回动画应循环的次数。如果图像格式不支持动画,则返回0。
- nextImageDelay()#
- 返回类型::
int
对于支持动画的图像格式,此函数返回读取下一图像之前应等待的毫秒数。如果图像格式不支持动画,则返回0。
- option(option)#
- 参数:
option –
ImageOption
- 返回类型::
对象
返回分配给
option
的值作为 QVariant。值的类型取决于选项。例如,option(Size) 返回一个 QSize 变体。从设备读取图像并存储在
image
中。如果图像成功读取,则返回true
,否则返回 false。对于支持增量加载的图像格式和动画格式,图像处理器可以假设
image
指向前一帧。另请参阅
将
QImageIOHandler
的设备设置为device
。图像处理器将使用此设备来读取和写入图像。设备只能设置一次,并且必须在调用
canRead()
、read()
、write()
等之前设置。如果你需要读取多个文件,请构建多个适当的QImageIOHandler
子类实例。另请参阅
- setFormat(format)#
- 参数:
format –
QByteArray
将
QImageIOHandler
的格式设置为format
。对于支持多种图像格式的处理器来说,格式最有用。此函数被声明为 const,因此可以从
canRead()
调用它。另请参阅
- setOption(option, value)#
- 参数:
option –
ImageOption
value – 对象
使用值
value
设置选项option
。另请参阅
- supportsOption(option)#
- 参数:
option –
ImageOption
- 返回类型::
bool
如果
QImageIOHandler
支持选项option
,则返回true
;否则返回false
。例如,如果QImageIOHandler
支持选项Size
,则必须返回 supportsOption(Size) 为真。另请参阅
将图像
image
写入分配的设备。成功时返回true
;否则返回false
。默认实现不执行任何操作,仅返回
false
。