获取RGB颜色

时间:2017-11-30 02:08:47

标签: python colors rgb

所以我正在寻找如何获取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

1 个答案:

答案 0 :(得分:0)

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

根据您发布的代码,看起来FileUtils.writeLines(new File("output.txt"), encoding, list); 包含24位颜色信息:红色8位,绿色8位,蓝色8位,最左边8位红色数据,中间8位的绿色数据,最右边的8位的蓝色数据。

想象一下RGB的位看起来像RGB,其中0brrrrrrrrggggggggbbbbbbbb是红色值的一位,r是绿色值的位,{{1有点蓝色值。

请注意,二进制文件中的gb(8个设置位)。

255使用0b11111111(右移)和colorGreen = (RGB >> 8) & 255(按位和)提取代表绿色的中间8位:

>>收益&

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

0brrrrrrrrggggggggbbbbbbbb >> 8收益0b00000000rrrrrrrrgggggggg

请注意如何仅保留绿色位。

编辑:这是一种简化。在Python中,0b00000000rrrrrrrrgggggggg & 0b00000000000000001111111是算术移位,而不是逻辑移位。算术移位保留符号。有关更详细的说明,请参阅What are bitwise shift (bit-shift) operators and how do they work?