用python计算相似颜色

2024-06-23 02:41:02 发布

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

如果我有RGB值:255, 165, 0,如何计算218, 255, 0255, 37, 0的相似颜色,但仍在应用任何RGB颜色?在

例如:

>>> to_analogous(0, 218, 255)
[(0, 255, 165),(0, 90, 255)]

编辑:为了简单起见,类似的颜色可以这样看,绿色是输入颜色,然后蓝绿色和黄绿色是输出:

(来源:tigercolor.com


Tags: tocom编辑颜色来源rgb绿色analogous
1条回答
网友
1楼 · 发布于 2024-06-23 02:41:02

从RGB转换为HSL并旋转+/-30度可能确实是您想要的,但您不会看到色轮显示。分别获得12和128种颜色,从纯红色开始(顶部),您将得到:

enter image description hereenter image description here

下面是生成类似颜色的示例代码:

import colorsys

DEG30 = 30/360.
def adjacent_colors((r, g, b), d=DEG30): # Assumption: r, g, b in [0, 255]
    r, g, b = map(lambda x: x/255., [r, g, b]) # Convert to [0, 1]
    h, l, s = colorsys.rgb_to_hls(r, g, b)     # RGB -> HLS
    h = [(h+d) % 1 for d in (-d, d)]           # Rotation by d
    adjacent = [map(lambda x: int(round(x*255)), colorsys.hls_to_rgb(hi, l, s))
            for hi in h] # H'LS -> new RGB
    return adjacent

另一个色轮是通过考虑减色系统得到的。为此,让我们考虑一下RYB颜色空间的简单性(它代表了你在任何典型学校的艺术课上可能学到的颜色混合)。通过使用它,我们可以立即获得以下车轮:

enter image description hereenter image description here

为了得到这些相似的颜色,我们考虑将RGB中的颜色直接表示为RYB中的颜色,然后从RYB转换为RGB。例如,假设在RGB中有一个三元组(255128,0)。调用该triple a RYB triple并转换为RGB以获得(255,64,0)。这种RYB->;RGB转换并不是唯一的,因为它可能有多种定义,我使用了Gosset和Chen的“基于绘画的颜色合成”中的定义。以下是执行转换的代码:

^{pr2}$

相关问题 更多 >