Testare i colori HSL, idealmente evitando Rosso adiacente a verde (tipo comune daltonismo)

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

  •  09-10-2019
  •  | 
  •  

Domanda

Ispirato dalla risposta superiore sulla questa pagina ho scritto un programma Python per generare N colori distinti HEX. La differenza è che l'autore originale genererebbe saturazione e luminanza utilizzando Math.random (), mentre io uso una funzione trigonometrica che posso garantire darà sempre una tonalità unica, saturazione e luminanza, mentre anche fornendo il vantaggio che potrebbe programma giallo più scure del blu, consentendo un migliore contrasto contro lo sfondo bianco e testo nero (quello che mi serve per).
Il codice Io in realtà uso anche converte HSL ai codici HEX, RGB via, in modo che posso creare codici di colore web.
Le mie domande sono: -

  1. Utilizzando questo modello, come posso garanzia che il rosso non apparirà accanto al verde ??
  2. Generazione i codici dei colori è abbastanza facile, ma come posso facilmente vedere loro? Al momento ho di caricare un file di grandi dimensioni piuttosto a un server che genera pdf / png / eps prima di scaricarlo di nuovo.
  3. posso fare questo con il test, ma Qualcuno ha esperienza con utilizzando il modello HSL per generare i colori il cui contrasto è massimizzata contro uno sfondo bianco con testo nero sulla parte superiore dei colori? Gli azzurri possono rendere il testo nero davvero difficile da vedere e gialli a volte difficile vedere contro il bianco ...

ps. Questo non è in realtà il codice che uso, ma tutto comincia qui. Lo script completo pitone è disponibile qui .
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)
... 

funzione __iter__ scritta come una risposta per la domanda qui

È stato utile?

Soluzione

  1. Eh? Test, e se si ottiene rosso vicino alla zona verde si ottiene un altro colore? Non sono sicuro di ciò che la questione è qui.

  2. Si potrebbe generare un PNG e aprirlo localmente. Quello è probabilmente il più facile. PIL è una buona biblioteca per questo. http://pypi.python.org/pypi/Pillow/

  3. No, mi dispiace, non so nulla.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top