class QImageIOHandler#

QImageIOHandler定义了Qt中所有图像格式通用的图像I/O接口。更多信息...

概述#

方法#

  • def __init__()

  • def device()

  • def format()

  • def setDevice()

  • def setFormat()

虚方法#

静态函数#

注意

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

详细描述#

Qt 使用 QImageIOHandler 通过 QImageReaderQImageWriter 来读取和写入图像。您还可以从此类派生来自定义图像格式处理器,使用 Qt 的插件机制。

调用 setDevice() 将设备分配给处理器,调用 setFormat() 将格式分配给它。一个 QImageIOHandler 可能支持超过一种图像格式。如果设备可以从中读取图像,则 canRead() 返回 true,如果读取或写入图像成功完成,则 read()write() 返回 true

QImageIOHandler 同样支持动画格式,通过以下函数来实现:loopCount()imageCount()nextImageDelay() 以及 currentImageNumber()

为了确定图像处理器支持哪些选项,Qt 将调用 supportsOption()setOption() 。请确保如果您可以提供对任何 ImageOption 枚举中选项的支持,则重写这些函数。

要编写自己的图像处理器,您必须至少重写 canRead()read() 。然后创建一个可以创建处理器的 QImageIOPlugin 。最后,安装您的插件,然后 QImageReaderQImageWriter 将自动加载插件,并开始使用它。

另请参阅

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)#
参数:
返回类型::

bool

这是一个用于子类中读取功能的便利方法。图像格式处理器必须拒绝加载图像,如果所需的分配将超过当前分配限制。此函数检查参数和限制,并在有效且需要时进行分配。在成功返回后,image 将是一个有效的、分离的 QImage,具有指定的 sizeformat

另请参阅

allocationLimit()

抽象 canRead()#
返回类型::

bool

如果可以从设备中读取图像(即,图像格式受支持,设备可读取,并且初始头信息表明可以读取图像),则返回 true;否则返回 false

当重新实现 canRead() 时,请确保 I/O 设备( device() )处于其原始状态(例如,通过使用 peek() 而不是 read() )。

另请参阅

read() peek()

currentImageNumber()#
返回类型::

int

对于支持动画的图像格式,此函数返回动画中当前图像的序列号。如果在调用此函数之前没有任何图像被 read(),则返回 -1。序列中第一张图像的编号为 0。

如果图像格式不支持动画,则返回 0。

另请参阅

read()

currentImageRect()#
返回类型::

QRect

返回当前图像的矩形。如果没有为图像定义矩形,则返回空的 QRect()。

此函数对于动画很有用,其中一次只能更新帧的一部分。

device()#
返回类型::

QIODevice

返回当前分配给 QImageIOHandler 的设备。如果没有分配任何设备,则返回 None

另请参阅

setDevice()

格式()#
返回类型::

QByteArray

返回当前分配给 QImageIOHandler 的格式。如果未分配格式,则返回空字符串。

另请参阅

setFormat()

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

optionImageOption

返回类型::

对象

返回分配给 option 的值作为 QVariant。值的类型取决于选项。例如,option(Size) 返回一个 QSize 变体。

摘要 read(image)#
参数:

imageQImage

返回类型::

bool

从设备读取图像并存储在 image 中。如果图像成功读取,则返回 true,否则返回 false。

对于支持增量加载的图像格式和动画格式,图像处理器可以假设 image 指向前一帧。

另请参阅

canRead()

setDevice(device)#
参数:

deviceQIODevice

QImageIOHandler 的设备设置为 device。图像处理器将使用此设备来读取和写入图像。

设备只能设置一次,并且必须在调用 canRead()read()write() 等之前设置。如果你需要读取多个文件,请构建多个适当的 QImageIOHandler 子类实例。

另请参阅

device()

setFormat(format)#
参数:

formatQByteArray

QImageIOHandler 的格式设置为 format。对于支持多种图像格式的处理器来说,格式最有用。

此函数被声明为 const,因此可以从 canRead() 调用它。

另请参阅

format()

setOption(option, value)#
参数:

使用值 value 设置选项 option

另请参阅

option() ImageOption

supportsOption(option)#
参数:

optionImageOption

返回类型::

bool

如果 QImageIOHandler 支持选项 option,则返回 true;否则返回 false。例如,如果 QImageIOHandler 支持选项 Size,则必须返回 supportsOption(Size) 为真。

另请参阅

setOption() option()

write(image)#
参数:

imageQImage

返回类型::

bool

将图像 image 写入分配的设备。成功时返回 true;否则返回 false

默认实现不执行任何操作,仅返回 false