Test de couleurs HSL, évitant idéalement rouge à côté de vert (type de daltonisme commun)

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

  •  09-10-2019
  •  | 
  •  

Question

Inspiré par le haut réponse sur cette page j'ai écrit une programme python pour générer N couleurs distinctes HEX. La différence est que l'auteur original générerait la saturation et la luminance en utilisant math.random (), alors que j'utilise une fonction trigonométrique que je peux garantir toujours donner une teinte unique saturation et luminance, tout en offrant l'avantage que je pourrait programme jaune apparaître plus sombre que le bleu, ce qui permet un meilleur contraste sur fond blanc et texte noir (ce que je besoin pour).
Le code que j'utilise réellement convertit également HSL aux codes HEX, via RGB, afin que je puisse créer des codes de couleurs web.
Mes questions sont les suivantes: -

  1. En utilisant ce modèle, comment puis-je garantie que le rouge n'apparaîtra à côté de vert ??
  2. Génération des codes de couleur est assez facile, mais comment puis-je les voir facilement? J'ai actuellement à télécharger le fichier un assez grand à un serveur qui génère pdf / .png / avant de le télécharger EPS à nouveau.
  3. Je peux le faire avec le test, mais quelqu'un at-il une expérience avec l'aide du modèle HSL pour générer des couleurs dont le contraste est maximisée sur un fond blanc avec texte noir sur le dessus des couleurs? Les bleus peuvent rendre le texte noir vraiment difficile de voir et les jaunes parfois difficile de voir contre le ... blanc

ps. Ce n'est pas en fait le code que je l'utilise, mais tout commence ici. Le script complet de python est disponible .
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)
... 

fonction __iter__ écrit en réponse à la question

Était-ce utile?

La solution

  1. Hein? Test, et si vous vous rapprochez rouge au vert vous obtenez une autre couleur? Je ne suis pas sûr de ce que la question est ici.

  2. Vous pourriez générer un PNG et ouvrir localement. Cest probablement le plus facile. PIL est une bonne bibliothèque pour cela. http://pypi.python.org/pypi/Pillow/

  3. Non, désolé, je ne sais rien à ce sujet.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top