2011-01-09 21 views
1

由頂答案上this page啓發我寫python程序,以產生N個不同HEX顏色。不同的是,原作者將使用的Math.random()產生飽和度和亮度,而我用三角函數,我可以保證總是會給一個獨特的色調,飽和度&亮度,同時也提供了優勢,我程序黃色比藍色顯得更暗,允許與白色背景更好的對比&黑色文本(我需要它)。
我實際使用的代碼也通過RGB將HSL轉換爲HEX代碼,以便我可以創建網絡顏色代碼。
我的問題是: -
測試HSL顏色,理想地避免紅相鄰的綠色(共同色盲型)

  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

+0

請記住,雖然大多數色盲患者都有紅綠色,但還有其他類型的色盲。例如藍黃色盲和全色盲。小心你不會爲一個團隊優化太多,以至於會讓其他團隊變得更糟。 – 2011-01-09 22:32:15

+0

是真實的,但我與紅綠色盲人一起工作,他必須看到結果... – 2011-01-09 22:45:58

回答

1
  1. 嗯答案嗎?測試,如果你的紅色接近綠色,你會得到另一種顏色?我不確定這裏有什麼問題。

  2. 您可以生成一個PNG並在本地打開它。這可能是最簡單的。 PIL是一個很好的圖書館。 http://pypi.python.org/pypi/Pillow/

  3. 不,對不起,我不知道的事情。