我建议您使用标准
colorsys
模块,并在HSV或HLS颜色坐标系中工作。通常,您需要确定基色的色调和饱和度,然后改变值或亮度以创建所需的色调范围。
下面是一个使用Numpy从给定色调创建HLS栅格的简短示例。
from colorsys import hls_to_rgb
import numpy as np
from PIL import Image
def ls_grid(hue, numcolors, scale):
a = np.linspace(0, 1, num=numcolors, endpoint=True)
grid = np.array([[hls_to_rgb(hue, lite, sat) for sat in a] for lite in a])
grid = (0.5 + 255 * grid).astype(np.uint8)
return grid.repeat(scale, axis=1).repeat(scale, axis=0)
hue = 0.585
numcolors, scale = 32, 16
grid = ls_grid(hue, numcolors, scale)
img = Image.fromarray(grid)
img.show()
img.save('litesat.png')