HSL Farben testen, idealerweise Rot neben Grün (gemeinsamen Farbenblindheit-Typ) zu vermeiden

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

  •  09-10-2019
  •  | 
  •  

Frage

Angeregt durch die Top-Antwort auf Diese Seite ich schrieb python-Programm zu N verschiedenen HEX Farben zu erzeugen. Der Unterschied besteht darin, dass der ursprüngliche Autor Sättigung und Luminanz mithilfe von math.random () erzeugen würde, während ich eine trigonometrische Funktion, die ich garantieren kann, wird immer eine einzigartige Farbton, Sättigung und Helligkeit geben, während auch den Vorteil bietet, dass ich könnte Programm gelb dunkler als blau zu erscheinen, einen besseren Kontrast vor weißen Hintergrund und schwarzen Text ermöglicht (was ich es brauche).
Der Code, den ich wandelt tatsächlich auch Codes HSL zu HEX verwenden, über RGB, so dass ich Web-Farbcodes erstellen können.
Meine Fragen sind: -

  1. dieses Modell verwenden, wie kann ich Garantie , dass rot nicht neben grün erscheinen ??
  2. Erzeugung des Farbcodes ist einfach genug, aber wie kann ich sie leicht sehen? Im Moment habe ich eine recht große Datei auf einen Server hochladen, die pdf erzeugt / png / eps, bevor es erneut herunterzuladen.
  3. Ich kann dies zu tun mit dem Testen, aber jemand Erfahrung hat mit dem HSL-Modell mit Farben, dessen Kontrastes zu erzeugen, wird maximiert, vor einem weißen Hintergrund mit schwarzem Text auf der Oberseite der Farben? Der Blues kann der schwarze Text wirklich schwer machen, um zu sehen und die Gelb- manchmal schwer zu sehen, vor dem weißen ...

ps. Dies ist nicht wirklich der Code, den ich verwenden, aber es fängt alles hier. Der vollständige Python-Skript ist verfügbar hier .
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)
... 

__iter__ Funktion als Antwort auf Frage geschrieben

War es hilfreich?

Lösung

  1. Wie? Test, und wenn Sie rot Nähe von grün erhalten erhalten Sie eine andere Farbe? Ich bin mir nicht sicher, was die Frage ist hier.

  2. Sie könnten eine PNG erzeugen und lokal öffnen. Das ist wahrscheinlich die einfachste. PIL ist eine gute Bibliothek für die. http://pypi.python.org/pypi/Pillow/

  3. Nein, tut mir leid, ich weiß nichts darüber.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top