如何程序化创建N个从深到浅的等距颜色
我想创建一个包含N种不同颜色的渐变,这些颜色从深色到浅色,视觉上看起来间隔相等。
类似于这个回答,但我想用Python来实现,而不是R(不过只能使用标准库,不能用比如numpy这样的库)。
我希望有一个函数,可以传入深色,比如RGB(103,0,13)
,和浅色,比如RGB(255,245,240)
,还有颜色的数量。就像ColorBrewer的输出那样(但在那个网站上我不能定义两个端点的颜色,而且最多只能有9种颜色)。
编辑:到目前为止我尝试过的:将RGB值转换为HLS格式,使用colorsys.rgb_to_hls(r, g, b)
,然后在深色和浅色之间插值调整色调。
1 个回答
2
这里有一种方法。不过要注意,你上面提到的渐变是某种非线性渐变。而下面这个函数生成的是线性渐变。
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)]