PySide6.QtGui.QPixelFormat

class QPixelFormat

QPixelFormat 是一个用于描述图形缓冲区中不同像素布局的类。更多

概要

方法

注意

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

详细描述

在Qt中,经常需要表示图形缓冲区中像素的布局。内部QPixelFormat将所有内容存储在64位数据结构中。这提供了性能,但也带来了一些限制。

QPixelFormat 可以描述5个颜色通道和1个透明度通道,每个通道可以使用6位来描述颜色通道的大小。

alpha通道的位置用一个单独的枚举来描述。这是为了能够描述像ARGB32这样的QImage格式,以及描述像RBGA8888这样的典型OpenGL格式。

像素应该如何读取是由TypeInterpretation枚举决定的。它描述了颜色值是应该逐字节读取,还是应该将像素作为一个完整的整数读取然后进行掩码处理。

不支持描述YUV的宏像素。相反,已经制作了一个YUV格式的列表。当QPixelFormat描述YUV格式时,bitsPerPixel值已通过YUV布局枚举推导出来。此外,除了第五个颜色通道应存储bitsPerPixel值外,所有颜色通道都应设置为零。

另请参阅

类型解释

class FieldWidth
class Field
class ColorModel

此枚举类型用于描述像素格式的颜色模型。Alpha 在 5.5 版本中添加。

常量

描述

QPixelFormat.RGB

颜色模型为RGB。

QPixelFormat.BGR

这在逻辑上是RGB的相反字节序版本。然而,为了便于使用,它有自己的模型。

QPixelFormat.Indexed

颜色模型使用调色板。

QPixelFormat.Grayscale

颜色模型为灰度。

QPixelFormat.CMYK

颜色模型是CMYK。

QPixelFormat.HSL

颜色模型是HSL。

QPixelFormat.HSV

颜色模型为HSV。

QPixelFormat.YUV

颜色模型是YUV。

QPixelFormat.Alpha

没有颜色模型,仅使用alpha。

class AlphaUsage

此枚举描述了是否使用alpha通道。有时像素格式会有alpha通道的大小,但实际上像素格式并不使用alpha通道。例如,RGB32就是这样的格式。RGB通道每个都是8位,没有alpha通道。但每个像素的完整大小是32。因此,alpha通道的大小是8,但alpha通道被忽略。需要注意的是,在这种情况下,alpha通道的位置是重要的。

常量

描述

QPixelFormat.IgnoresAlpha

不使用alpha通道。

QPixelFormat.UsesAlpha

使用了alpha通道。

class AlphaPosition

此枚举类型用于描述相对于颜色通道的alpha通道位置。

常量

描述

QPixelFormat.AtBeginning

Alpha通道将放在颜色通道的前面。例如:ARGB。

QPixelFormat.AtEnd

Alpha通道将放在颜色通道的后面。例如RGBA。

class AlphaPremultiplied

此枚举类型描述了布尔状态,即是否将alpha通道乘以颜色通道。

常量

描述

QPixelFormat.NotPremultiplied

alpha通道未乘入颜色通道。

QPixelFormat.Premultiplied

alpha通道被乘入颜色通道。

class TypeInterpretation

此枚举描述了每个像素的解释方式。如果一个像素被读取为一个完整的32位无符号整数,然后每个通道被屏蔽掉,或者每个字节被读取为无符号字符值。通常QImage格式将一个像素解释为无符号整数,然后颜色通道被屏蔽掉。另一方面,OpenGL通常将像素解释为“一个接一个的字节”,即无符号字节。

QImage 也有格式 Format_RGBA8888(及其衍生格式),其中像素被解释为无符号字节。OpenGL 有扩展,使得可以以无符号整数格式上传像素缓冲区。

../../_images/qpixelformat-argb32buffer.png

上图显示了内存中作为无符号整数读取的ARGB像素。然而,如果在小端系统上逐字节读取此像素,第一个字节将包含B通道。下一个字节将是G通道,然后是R通道,最后是A通道。这表明在小端系统上,每个像素的解释对于整数格式是重要的。在大端系统上则不是这种情况。

常量

描述

QPixelFormat.UnsignedInteger

QPixelFormat.UnsignedShort

QPixelFormat.UnsignedByte

QPixelFormat.FloatingPoint

class YUVLayout

YUV 不是通过描述颜色通道的大小来表示的。这是因为 YUV 经常使用宏像素,使得单独颜色通道的概念无效。相反,不同的 YUV 布局通过这个枚举来描述。

常量

描述

QPixelFormat.YUV444

QPixelFormat.YUV422

QPixelFormat.YUV411

QPixelFormat.YUV420P

QPixelFormat.YUV420SP

QPixelFormat.YV12

QPixelFormat.UYVY

QPixelFormat.YUYV

QPixelFormat.NV12

QPixelFormat.NV21

QPixelFormat.IMC1

QPixelFormat.IMC2

QPixelFormat.IMC3

QPixelFormat.IMC4

QPixelFormat.Y8

QPixelFormat.Y16

class ByteOrder

此枚举描述了像素格式的字节顺序。此枚举大多被忽略,但在YUV格式中有一些用例。BGR格式有自己的颜色模型,不应通过在RGB格式上使用相反的字节顺序来描述。

常量

描述

QPixelFormat.LittleEndian

字节顺序为小端序。

QPixelFormat.BigEndian

字节顺序为大端序。

QPixelFormat.CurrentSystemEndian

此枚举不会被存储,但在构造函数中会转换为与当前系统枚举匹配的字节序枚举。

__init__()

创建一个空像素格式。此格式映射到Format_Invalid

__init__(colorModel, firstSize, secondSize, thirdSize, fourthSize, fifthSize, alphaSize, alphaUsage, alphaPosition, premultiplied, typeInterpretation[, byteOrder=QPixelFormat.ByteOrder.CurrentSystemEndian[, subEnum=0]])
Parameters:

创建一个QPixelFormat,将其数据分配给属性。colorModel将被放入一个4位长的缓冲区中。

firstSize secondSize thirdSize fourthSize fifthSize alphaSize 都用于表示通道的大小。这些通道将根据 colorModel 用于不同的用途。对于 RGB,firstSize 将表示红色通道。对于 CMYK,它将表示青色通道的值。

alphaUsage 表示是否使用了alpha通道。

alphaPosition 是 alpha 通道的位置。

premultiplied 表示是否已经将 alpha 通道与颜色通道相乘。

typeInterpretation 是像素的解释方式。

byteOrder 表示像素格式的字节序。默认值为 CurrentSystemEndian

subEnum 用于需要存储一些额外信息的颜色模型,通过提供一个额外的枚举来实现。YUV 使用它来存储 YUV 类型,默认值为 0。

alphaPosition()
Return type:

AlphaPosition

alphaPosition 的访问器函数。

alphaSize()
Return type:

整数

用于访问alpha通道大小的访问器函数。

alphaUsage()
Return type:

AlphaUsage

alphaUsage的访问器函数。

bitsPerPixel()
Return type:

整数

用于每个像素使用的位数的访问器函数。此函数返回颜色通道的总和加上alpha通道的大小。

blackSize()
Return type:

整数

黑色/键颜色通道的访问器函数。

blueSize()
Return type:

整数

蓝色通道大小的访问器函数。

brightnessSize()
Return type:

整数

亮度通道大小的访问器函数。

byteOrder()
Return type:

ByteOrder

字节顺序几乎总是设置为当前系统的字节顺序。然而,描述一些YUV格式时可能会有用。此函数永远不应返回CurrentSystemEndian,因为此值在构造函数中被转换为一个字节顺序值。

channelCount()
Return type:

整数

用于获取channelCount的访问器函数。通道计数是通过大小大于0的颜色通道推导出来的,如果alpha通道的大小大于0。

colorModel()
Return type:

ColorModel

用于获取颜色模型的访问器函数。

cyanSize()
Return type:

整数

青色颜色通道的访问器函数。

greenSize()
Return type:

整数

绿色通道大小的访问器函数。

hueSize()
Return type:

整数

色调通道大小的访问器函数。

lightnessSize()
Return type:

整数

用于亮度通道大小的访问器函数。

magentaSize()
Return type:

整数

用于洋红色通道的访问器函数。

__ne__(fmt2)
Parameters:

fmt2QPixelFormat

Return type:

布尔

__eq__(fmt2)
Parameters:

fmt2QPixelFormat

Return type:

布尔

premultiplied()
Return type:

AlphaPremultiplied

用于AlphaPremultiplied枚举的访问器函数。这表示是否将alpha通道乘入颜色通道。

redSize()
Return type:

整数

红色通道大小的访问器函数。

saturationSize()
Return type:

整数

饱和度通道大小的访问器函数。

subEnum()
Return type:

整数

typeInterpretation()
Return type:

类型解释

用于颜色通道或像素类型表示的访问器函数。

另请参阅

类型解释

yellowSize()
Return type:

整数

黄色颜色通道的访问器函数。

yuvLayout()
Return type:

YUVLayout

用于访问YUVLayout的函数。由于YUV颜色模型使用宏像素,因此很难描述YUV像素格式的颜色通道。相反,像素的布局被存储为一个枚举。