获取RGB颜色

2024-10-02 10:28:02 发布

您现在位置:Python中文网/ 问答频道 /正文

因此,我正在寻找如何获得一个RGB颜色列表,这取决于要检索的颜色总数,我找到了这段代码。还有一部分我无法理解,我已经读过注释中“>;”和“&;”运算符是位运算符,但我无法完全理解它们在做什么。在

谁能帮我理解颜色的价值所在吗 是否已分配?在

def getDinstinctRGBColorsList(desiredColors)
    availableColors = 16000000
    inc = availableColors/desiredColors
    colorsList = {}
    RGB = 0
    count = 0
    while count <= desiredColors:
        RGB = RGB+inc
        colorBlue = RGB & 255
        colorGreen = (RGB >> 8) & 255
        colorRed = (RGB >> 16) & 255
        colorsList[count] = str(colorRed) + "," + str(colorGreen) + "," + str(colorBlue)
        count += 1
    return colorsList

Tags: 代码列表颜色count运算符rgbinc总数
1条回答
网友
1楼 · 发布于 2024-10-02 10:28:02

请参见BitwiseOperatorsWhat are bitwise shift (bit-shift) operators and how do they work?。在

从您发布的代码来看,RGB包含24位颜色信息:8位代表红色,8位代表绿色,8位代表蓝色,红色数据在最左边8位,绿色数据在中间8位,蓝色数据在最右边8位。在

假设RGB的位看起来像0brrrrrrrrggggggggbbbbbbbb,其中r是红色值的一个位,g是绿色值的一个位,b是蓝色值的一个位。在

注意二进制中的2550b11111111(8个设置位)。在

colorGreen = (RGB >> 8) & 255正在使用>>(右移)和{}(按位与)提取表示绿色的中间8位:

0brrrrrrrrggggggggbbbbbbbb >> 8产生{}

注意绿色的位现在是最左边的8位。然而,红色的部分仍然存在。在

{{cd15}

注意只剩下绿色的部分。在

编辑:这是一个简化。在Python中,>>是算术移位,而不是逻辑移位。算术移位保留符号。请参见What are bitwise shift (bit-shift) operators and how do they work?以获得更详细的解释。在

相关问题 更多 >

    热门问题