Farb-Hexcode ermitteln

vivi45

Grünschnabel
Schau mich gerade ein wenig um! Hab schon öfter mal hier rein geschaut macht spaß hier zu lesen hab auch schon einige Themen gefunden die mich interessieren! Bin durch einen Link im http://www.problems-solution.com/ hier her gekommen! Da ich auch ein Problem hab und hier gerne die Lösung dafür finden würde weil dieses Forum hier spezialisierter ist! Hoffentlich klappt es! Gibt es eine Möglichkeit mit einem Script (PHP?) rauszufinden, ob eine Farbe (Hexcode) hell oder dunkel ist?

In etwa (Beispiel nur zur verständnis):

If($farbe == hell){
$schriftfarbe = schwarz;
}
elseif($farbe == dunkel){
$schriftfarbe = weiß;
}


Wäre über jede Hilfe sehr dankbar.
 
Hi und Willkommen im Forum ^^

Zu deinem Problem:

Ich tendiere dazu zu sagen das der Zahlwert der farbe immer kleiner wird und somit die farbe dunkler. Dementsprechend sind helle Farben im bereich der höheren Zahlen, jedoch weiß ich nicht ob das so korrekt ist da es ja 3 einzelfarben sind die gemischt werden.

0xFFFFFF = weiß
0x000000 = schwarz

Ich hoffe du verstehst was ich mein
 
Hallo!

Zuerst einmal etwas Grundwissen ... ;-)
Also ein Farb-Hex-Code besteht aus insgesamt 3 Byte => #FF FF FF -- notiert wird das ganze in Hexadezimal-Schreibweise (äquivalent 0xFFFFFF)
Pro Byte wird jeweils die Farbe Rot, Grün, Blau definiert.

D.h. #FF0000 für rot, #00FF00 für Blau, usw. ..


Kommen wir nun zum eigentlichen Problem ...

Was du vor allen dingen jetzt brauchst ist ein Schwellenwert ab wann Hell/Dunkel unterschieden wird. Nehmen wir mal an, dein Schwellenwert ist 127. Um zu überprüfen, ob jetzt eine Farbe hell oder dunkel ist, kannst du wie folgt vor gehen

PHP:
$schwellenwert = 127;
$farbcode = "8800BB"; // beispielsweise .. kann auch ein anderer sein

if(hexdec(substr($farbcode,0,2)) > $schwellenwert || hexdec(substr($farbcode,2,2)) > $schwellenwert || hexdec(substr($farbcode,4,2)) > $schwellenwert)
{
    // das hier ist hell
}
else
{
   // das hier ist dunkel
}

was natürlich schwierig ist, ist zu sagen was denn nun heller ist... rot oder blau? (subjektiv würd ich rot behaupten .. d.h. wenn man es GANZ genau haben will sollte man noch eine subjektive gewichtung in die abfrage geben ... aber das dürfte dann doch etwas too sophisticated sein denk ich mal ;-)
 
Hallo!

Zuerst einmal etwas Grundwissen ... ;-)
Also ein Farb-Hex-Code besteht aus insgesamt 3 Byte => #FF FF FF -- notiert wird das ganze in Hexadezimal-Schreibweise (äquivalent 0xFFFFFF)
Pro Byte wird jeweils die Farbe Rot, Grün, Blau definiert.

D.h. #FF0000 für rot, #00FF00 für Blau, usw. ..


Kommen wir nun zum eigentlichen Problem ...

Was du vor allen dingen jetzt brauchst ist ein Schwellenwert ab wann Hell/Dunkel unterschieden wird. Nehmen wir mal an, dein Schwellenwert ist 127. Um zu überprüfen, ob jetzt eine Farbe hell oder dunkel ist, kannst du wie folgt vor gehen

PHP:
$schwellenwert = 127;
$farbcode = "8800BB"; // beispielsweise .. kann auch ein anderer sein

if(hexdec(substr($farbcode,0,2)) > $schwellenwert || hexdec(substr($farbcode,2,2)) > $schwellenwert || hexdec(substr($farbcode,4,2)) > $schwellenwert)
{
    // das hier ist hell
}
else
{
   // das hier ist dunkel
}

was natürlich schwierig ist, ist zu sagen was denn nun heller ist... rot oder blau? (subjektiv würd ich rot behaupten .. d.h. wenn man es GANZ genau haben will sollte man noch eine subjektive gewichtung in die abfrage geben ... aber das dürfte dann doch etwas too sophisticated sein denk ich mal ;-)

In welchen Breichen sollte denn der Schwellwer liegen? Gibt es dafür irgend eine Vorgabe! Oder kann ich den selber festlegen? Sorry wenn ich so frage kenne mich noch wenig aus damit.
 
Also ich habe den Schwellwert bei 125 gelegt. Ich denke das es so am besten ist mit Kontrast usw.
Wo habt Ihr den euere Schwellwerte gelegt?
Dmait ich nicht so ganz falsch liege. Liegt ja auch immer im Auge des betrachters.
Oder?
 
So nachdem ich den ganzen Scheiss erst mal weg gelegt habe. Und es nicht wieder angfasst habe. Probiere ich es nocheinmal wieder.

Bräuchte aber nochmal eure HIlfe
Also ich habe den Schwellwert bei 125 gelegt.
Wo habt Ihr den euere Schwellwerte gelegt?
 
Zurück