Python 如何以编程方式创建从暗到亮的N个连续等距颜色

Python 如何以编程方式创建从暗到亮的N个连续等距颜色,python,colors,Python,Colors,我想创建一个N种不同颜色的渐变,从深色到浅色,所有颜色在视觉上是等距的 与中类似,但用于Python而不是R(但只能使用标准库,而不是例如numpy) 我想要一个函数,其中我可以作为参数给出深色,例如RGB(103,0,13),浅色,例如RGB(255245240),以及阴影的数量。类似于的输出(但在那里我不能定义两个结束颜色,我被限制为最多9个阴影) 编辑:我到目前为止尝试的:使用colorsys.RGB_到HLS(r,g,b)并在深色和浅色之间插入色调,将RGB值转换为HLS。这里有一种方

我想创建一个N种不同颜色的渐变,从深色到浅色,所有颜色在视觉上是等距的

与中类似,但用于Python而不是R(但只能使用标准库,而不是例如numpy)

我想要一个函数,其中我可以作为参数给出深色,例如
RGB(103,0,13)
,浅色,例如
RGB(255245240)
,以及阴影的数量。类似于的输出(但在那里我不能定义两个结束颜色,我被限制为最多9个阴影)


编辑:我到目前为止尝试的:使用
colorsys.RGB_到HLS(r,g,b)
并在深色和浅色之间插入色调,将RGB值转换为HLS。

这里有一种方法。但是,请注意,您上面发布的示例渐变是某种非线性渐变。下面的函数生成线性渐变

def generateColorGradient(RGB1, RGB2, n):
    dRGB = [float(x2-x1)/(n-1) for x1, x2 in zip(RGB1, RGB2)]
    gradient = [tuple([int(x+k*dx) for x, dx in zip(RGB1, dRGB)]) for k in range(n)]
    return gradient

print generateColorGradient((103,0,13), (255,245,240), 9)

# OUTPUT
# [(103, 0, 13), (122, 30, 41), (141, 61, 69), (160, 91, 98), (179, 122, 126), (198, 153, 154), (217, 183, 183), (236, 214, 211), (255, 245, 240)]

您自己做了哪些努力来实现这一点?到目前为止,您的代码在哪里?“您上面发布的示例渐变是某种非线性渐变。”也许OP使用的是比“均匀分布的RGB值”更奇特的“视觉等距”定义。有许多描述人类对色差感知的方法。如果在进行渐变之前转换到Lab颜色空间,然后再转换回RGB,则您的算法与CIE76公式配合得很好。有趣。我不知道存在一个感知色彩的公式。