Für Webseiten und deren HTML und CSS Code benötigt man die Farben als RGB-Werte: Diese werden allerdings hexadezimal und nicht dezimal angegeben. So hat man statt den Farbwerten von 0 bis 255 pro Farbe Rot, Grün oder Blau Werte von 00 bis FF. Zum Umrechnen der dezimalen Farbwerte in die hexadezimale Form hat PHP bereits eine eigene Funktion: Diese muss man allerdings für dunkle Farben anpassen!
PHP: Dezimal-Werte in hexadezimale Werte umrechnen
Die dezimalen Farbwerte für einen Pixel können die Werte von 0 bis 255 jeweils für den R-, G- und B-Kanal annehmen. Ein reines Rot sieht daher so aus:
R: 255
G: 0
B: 0
Liegen die drei Werte schon in einzelnen Variablen $r, $g und $b vor, lässt sich jeder Farbwert einzeln von dem Dezimal-System in das hexadezimale System umrechnen: PHP bringt dafür die Funktion dechex() mit.
Unser Beispiel oben würde dann in PHP so aussehen:
$r = 255;
$g = 0;
$b = 0;
$hexr = dechex($r);
$hexg = dechex($g);
$hexb = dechex($b);
Fügt man die Werte jetzt zu einem String zusammen, den man für eine Farbe in HTML oder CSS nutzen möchte, hätte das Ergebnis einen Fehler:
$farbwert = $hexr.''.$hexg.''.$hexb;
Dies würde als Ergebnis dies ergeben:
$farbwert = FF00;
Ist die hexadezimale Ziffer nach der Umrechnung nur einstellig, muss noch eine 0 ergänzt werden. Die Umrechnung geht daher mit dieser Funktion einfacher:
if(strlen(dechex($r)) == 1) { $hexr = '0'.dechex($r); } else { $hexr = dechex($r); }
if(strlen(dechex($g)) == 1) { $hexg = '0'.dechex($g); } else { $hexg = dechex($g); }
if(strlen(dechex($b)) == 1) { $hexb = '0'.dechex($b); } else { $hexb = dechex($b); }
Mit der Funktion strlen() wird die Länge des Strings nach der Umwandlung in das HEX System überprüft. Ist dieser Wert einstellig, wird vorne noch eine Null ergänzt: Der Farbwert sieht dann so aus:
$farbwert = FF0000;
Diesen Wert kann man jetzt für HTML und CSS als Farbwert weiter nutzen!