このページの一番上の回答に触発されて、N 個の異なる HEX 色を生成する Python プログラムを作成しました。違いは、元の作成者が math.random() を使用して彩度と輝度を生成するのに対し、私は常に一意の色相、彩度、輝度を提供することを保証できる三角関数を使用し、プログラムできるという利点も提供することです。黄色は青よりも暗く見えるため、白い背景と黒いテキストとのコントラストが向上します(必要なものです)。
私が実際に使用するコードは、Web カラー コードを作成できるように、RGB を介して HSL コードを HEX コードに変換します。
私の質問は:-
- このモデルを使用して、赤が緑の隣に表示されないことをどのように保証できますか??
- カラーコードを生成するのは簡単ですが、どうすれば簡単に見ることができますか? 現在、pdf / png / eps を生成するサーバーに非常に大きなファイルをアップロードしてから、再度ダウンロードする必要があります。
- 私はテストでこれを行うことができますが、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__
ここに質問に対する回答として書かれた関数