Prueba de colores HSL, evitando idealmente rojo adyacente a verde (tipo común de daltonismo)

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

  •  09-10-2019
  •  | 
  •  

Pregunta

Inspirado por la respuesta en la parte superior esta página escribí una programa de Python para generar N colores distintos HEX. La diferencia es que el autor original generaría la saturación y luminancia utilizando math.random (), mientras que utilizo una función trigonométrica que puedo garantizar siempre dar un único matiz, la saturación y luminancia, mientras que también proporciona la ventaja de que I podría programa de amarillo a aparecer más oscuro que el color azul, lo que permite un mejor contraste sobre fondo blanco y texto negro (lo que necesito para).
El código realidad utilizo también convierte a HSL códigos HEX, a través de RGB, de modo que pueda crear códigos de colores web.
Mis preguntas son: -

  1. Usando este modelo, ¿cómo puedo garantía que el rojo no aparece junto a verde ??
  2. Generación de los códigos de color es bastante fácil, pero ¿cómo puedo fácilmente verlos? Actualmente tengo que cargar un archivo bastante grande a un servidor que genera pdf / png / EPS antes de descargarla de nuevo.
  3. Me puede hacer esto con las pruebas, pero ¿alguien tiene experiencia con el uso del modelo HSL para generar colores cuyo contraste se maximiza contra un fondo blanco con el texto negro en la parte superior de los colores? Los azules pueden hacer que el texto negro muy difícil de ver y los amarillos a veces difíciles de ver contra el blanco ...

ps. Esto no es realmente el código que utilizo, pero todo comienza aquí. El script en Python completo está disponible aquí .
Cheers,
Alex

>>> 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)
... 

Función __iter__ escrito como una respuesta para la pregunta aquí

¿Fue útil?

Solución

  1. ¿Eh? Prueba, y si obtiene el primer rojo a verde se obtiene otro color? No estoy seguro de cuál es la pregunta aquí.

  2. podría generar un PNG y abrirlo localmente. Eso es probablemente el más fácil. PIL es una buena biblioteca para eso. http://pypi.python.org/pypi/Pillow/

  3. No, lo siento, no sé nada al respecto.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top