Gunnar Bittersmann: hexadezimale Farbwerte auf Helligkeit analysieren

Beitrag lesen

@@Dodwin:

nuqneH

Erst mal RGB-Werte auslesen:
$rgb = array(substr($hex,0,2), ...);

Wo bekommst du $hex her? Aus dem Stylesheet?
Bei der Angabe "#FF0000" stünde noch '#' davor.
Dieselbe Farbe kann aber auch als "#F00" angegeben werden.
Dieselbe Farbe kann aber auch als "rgb(255, 0, 0)" angegeben werden.
Dieselbe Farbe kann aber auch als "red" angegeben werden.

Anschließend Durchschnitt berechnen:
$average = (hexdec($rgb[0]) + ...) / 3;

Nein. Das ergäbe für "#FF0000", "#00FF00" und "#0000FF" denselben Mittelwert 85. "#00FF00"/"green" erscheint aber viel heller als "#FF0000"/"red" und "#0000FF"/"blue".

Deshalb ist für die (vom menschlichen Auge wahrgenommene) Helligkeit ein gewichteter Mittelwert zu berechnen:
0.299 * R + 0.587 * G + 0.114 * B (YUV-Farbmodell)

Qapla'

--
Volumen einer Pizza mit Radius z und Dicke a: pi z z a