测试HSL颜色,理想情况下避免了与绿色相邻的红色(常见的颜色类型)

StackOverflow https://stackoverflow.com/questions/4642219

  •  09-10-2019
  •  | 
  •  

受到最高答案的启发 这一页 我写了一个Python程序来生成n个不同的十六进制颜色。不同之处在于,原始作者将通过使用Math.random()产生饱和度和亮度,而我使用三角函数,我可以保证,我可以保证,我可以始终提供独特的色调,饱和度和亮度,同时也提供了我的优势。 可以 节目黄色比蓝色更暗,可以更好地与白色背景和黑色文本(我需要它)更好的对比度。
我实际使用的代码还通过RGB将HSL转换为十六进制代码,以便我可以创建Web颜色代码。
我的问题是: -

  1. 使用此模型,我该如何 保证 那红色不会出现在绿色旁边?
  2. 生成颜色代码很容易,但是我如何轻松看到它们?目前,我必须将相当大的文件上传到一台在再次下载之前生成PDF / png / eps的服务器。
  3. 我可以通过测试进行此操作,但是是否有人有使用HSL模型生成颜色的经验,这些颜色的对比与白色背景最大化,黑色文字在颜色的顶部?蓝调可以使黑色文字真正难以看见,有时候黄色很难与白色相抵触...

PS。这实际上不是我使用的代码,但这一切都从这里开始。完整的Python脚本可用 这里.
干杯,
亚历克斯

>>> class generate_HSL_colours():
...    def __init__( self, N, shift=0, degrees=360 ):
...        dict.__init__(self)
...        self.N = N
...        hues = [ angle for angle in xrange( shift, shift+degrees , degrees / N ) ] # Default hues from 0 --> 360
...        self.colours = generate_HSL_colours()
...    def generate_HSL_colours(self,angles):
...        colours = []
...        colour = HSLColour()
...        for angle in angles:
...            cos_value = math.cos( angle * math.pi / 360 ) ## <== in radians. Degrees == cos( angle/2 ) ; so cos_value goes from 1 to -1, and 0 <= angle < 180.
...            ## Could use sin_value too...
...            saturation = 90 - (cos_value * 10)  ## Saturation from 80 --> 100
...            luminance = 50 + (cos_value * 10)   ## Lightness from 60 --> 40
...            HSLColour.hue = hue
...            HSLColour.saturation = saturation
...            HSLColour.luminance = luminance
...            colours.append( HSLColour )
...        return colours
...
...    def __iter__(self):  ## I put this in to answer a different question (see below).
...      for colour in self.colours:
...          yield repr(colour.hue, colour.saturation, colour.lightness)
... 

__iter__ 函数写为问题的答案 这里

有帮助吗?

解决方案

  1. 嗯?测试,如果您接近绿色,您会得到另一种颜色?我不确定这里是什么问题。

  2. 您可以生成PNG并在本地打开。那可能是最简单的。 PIL是一个很好的图书馆。 http://pypi.python.org/pypi/pillow/

  3. 不,对不起,我对此一无所知。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top