class QPixelFormat#

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

概要#

方法#

注意

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

详细描述#

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

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

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

像素应该如何读取由TypeInterpretation枚举确定。它描述了颜色值是否应该逐字节读取,或者像素是否应该作为一个完整的int读取后进行屏蔽。

没有支持描述YUV的宏像素。相反,已经制作了一份YUV格式的列表。当使用QPixelFormat描述YUV格式时,bitsPerPixel的值是通过YUV布局枚举推算的。此外,颜色通道应全部设置为0,除了第五个颜色通道应存储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__(colorModel, firstSize, secondSize, thirdSize, fourthSize, fifthSize, alphaSize, alphaUsage, alphaPosition, premultiplied, typeInterpretation[, byteOrder=QPixelFormat.ByteOrder.CurrentSystemEndian[, subEnum=0]])#
参数:

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

firstSizesecondSizethirdSizefourthSizefifthSizealphaSize 都代表了通道的大小。这些通道将根据 colorModel 的不同用途而使用。对于 RGB,firstSize 表示红色通道。在 CMYK 中,它将表示青色通道的值。

alphaUsage 表示是否使用 alpha 通道。

alphaPosition 是 alpha 通道的位置。

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

typeInterpretation 表示像素如何被解释。

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

subEnum 用于存储额外信息的colorModels,需要提供一个额外的枚举。这用于YUV存储YUV类型。默认值是0。

__init__()

创建一个空的中像素格式。该格式映射到 Format_Invalid .

alphaPosition()#
返回类型:

AlphaPosition

alphaPosition的访问器函数。

alphaSize()#
返回类型:

int

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

alphaUsage()#
返回类型:

AlphaUsage

alphaUsage的访问器函数。

bitsPerPixel()#
返回类型:

int

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

blackSize()#
返回类型:

int

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

blueSize()#
返回类型:

int

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

brightnessSize()#
返回类型:

int

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

byteOrder()#
返回类型:

ByteOrder

字节顺序通常是设置为当前系统的字节顺序。然而,对于一些YUV格式来说,这可能是很有用的。该函数不应返回《a class="reference internal" href="#PySide6.QtGui.QPixelFormat.ByteOrder" title="PySide6.QtGui.QPixelFormat.ByteOrder">CurrentSystemEndian,因为这个值在构造函数中被转换为端序值。

channelCount()#
返回类型:

int

获取channelCount的访问器函数。通道计数是通过颜色通道(大小>0)以及如果alpha通道的大小>0来推断的。

colorModel()#
返回类型:

ColorModel

获取colorModel的访问器函数。

cyanSize()#
返回类型:

int

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

greenSize()#
返回类型:

int

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

hueSize()#
返回类型:

int

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

lightnessSize()#
返回类型:

int

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

magentaSize()#
返回类型:

int

红色通道的访问器函数。

__ne__(fmt2)#
参数:

fmt2QPixelFormat

返回类型:

bool

__eq__(fmt2)#
参数:

fmt2QPixelFormat

返回类型:

bool

premultiplied()#
返回类型:

AlphaPremultiplied

AlphaPremultiplied枚举的访问器函数。这表示alpha通道是否乘到颜色通道中。

redSize()#
返回类型:

int

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

saturationSize()#
返回类型:

int

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

subEnum()#
返回类型:

int

typeInterpretation()#
返回类型:

类型解释

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

另请参阅

类型解释

yellowSize()#
返回类型:

int

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

yuvLayout()#
返回类型:

YUVLayout

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