PySide6.QtGui.QImageIOHandler

class QImageIOHandler

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

概要

方法

虚拟方法

静态函数

注意

本文档可能包含从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

图像数据的压缩比率。支持此选项的处理程序在写入时应根据此选项的值(一个整数)设置其压缩率。

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)
Parameters:
Return type:

布尔

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

另请参阅

allocationLimit()

abstract canRead()
Return type:

布尔

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

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

另请参阅

read() peek()

currentImageNumber()
Return type:

整数

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

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

另请参阅

read()

currentImageRect()
Return type:

QRect

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

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

device()
Return type:

QIODevice

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

另请参阅

setDevice()

format()
Return type:

QByteArray

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

另请参阅

setFormat()

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变体。

abstract read(image)
Parameters:

图像QImage

Return type:

布尔

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

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

另请参阅

canRead()

setDevice(device)
Parameters:

设备QIODevice

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

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

另请参阅

device()

setFormat(format)
Parameters:

formatQByteArray

设置QImageIOHandler的格式为format。该格式对于支持多种图像格式的处理程序最为有用。

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

另请参阅

format()

setOption(option, value)
Parameters:

设置选项 option 的值为 value

另请参阅

option() ImageOption

supportsOption(option)
Parameters:

选项ImageOption

Return type:

布尔

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

另请参阅

setOption() option()

write(image)
Parameters:

图像QImage

Return type:

布尔

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

默认实现不执行任何操作,并简单地返回false