【问题标题】:Testing HSL colours, ideally avoiding Red adjacent to Green (common colour-blindness type)测试 HSL 颜色,最好避免与绿色相邻的红色(常见色盲类型)
【发布时间】:2011-01-09 22:20:07
【问题描述】:

this page 上的最佳答案的启发,我编写了一个 python 程序来生成 N 种不同的 HEX 颜色。不同之处在于,原作者将使用 math.random() 生成饱和度和亮度,而我使用三角函数,我可以保证它始终会给出独特的色调、饱和度和亮度,同时还提供了 I 可以将黄色编程为比蓝色更暗,从而与白色背景和黑色文本形成更好的对比(我需要它)。
我实际使用的代码还通过 RGB 将 HSL 转换为 HEX 代码,以便我可以创建 Web 颜色代码。
我的问题是:-

  1. 使用此模型,我如何保证红色不会出现在绿色旁边??
  2. 生成颜色代码很容易,但我怎样才能轻松地看到它们呢?我目前必须将相当大的文件上传到生成 pdf / png / eps 的服务器,然后再次下载。
  3. 我可以通过测试来做到这一点,但是有没有人有使用 HSL 模型生成颜色的经验,这些颜色与白色背景的对比度最大化,颜色顶部有黑色文本?蓝色会使黑色文本很难看清,而黄色有时很难在白色背景下看到......

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

>>> 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__ 函数编写为问题here 的答案

【问题讨论】:

  • 请记住,虽然大多数色盲患者有红绿色,但还有其他类型的色盲。例如蓝黄色盲和全色盲。请注意,不要对一个组进行太多优化,以免其他组的情况变得更糟。
  • 是的,但我和一个红绿色盲的人一起工作,他必须看到结果......

标签: python hsl


【解决方案1】:
  1. 嗯?测试,如果你得到接近绿色的红色,你会得到另一种颜色?我不确定这里的问题是什么。

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

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

【讨论】:

  • 1.例如在一张图像上,我使用相同的函数来生成两个颜色空间。一种只有 3 种颜色,使用 0 到 360 的色调(按顺序)给出红色、绿色、蓝色。绿色,蓝色然后红色就可以了。 2. 示例或链接好吗?不知道怎么做...我使用其他人的软件制作图像...谢谢! :) 3. 不用担心,但还是感谢您的阅读 :)
  • 1.是的,我明白了。只是答案是如此明显,以至于我认为我误解了这个问题。如果您不希望红色和绿色彼此靠近,请不要将它们靠近... :) 2. PIL 是一个很好的库。我更新了答案。
  • 1.我所做的是将 shift 更改为 81,并且对于 3 种颜色很好。但是有了更多的颜色,我可以在绿色旁边得到红色。我可能会完全去掉红色,但我不想那样做。对于索引顺序相同的光谱,我敢肯定色盲的人可以很容易地弄清楚。但是当它们彼此相邻时,就会产生问题。
  • 我还是不明白你的问题是什么。
  • 是的,PIL 会的……谢谢!打勾:)
猜你喜欢
  • 1970-01-01
  • 2017-05-28
  • 2016-08-26
  • 2011-05-08
  • 1970-01-01
  • 2011-10-28
  • 1970-01-01
  • 2011-09-22
  • 2021-07-07
相关资源
最近更新 更多