03. Januar 2012 · Kommentieren · Kategorien: Internet · Tags:

Ich habe soeben die Arbeiten an einer neuen Version von picoclean fertiggestellt. In Version 0.4 ist es nun endlich möglich, das Farbschema komfortabel im Admin-Menü zu ändern. Dabei bin ich auf das Problem gestoßen, dass ich mittels PHP einen hexadezimalen Farbcode (z. B. #f0f0f0) in RGB-Wert (in diesem Fall 240,240,240) umwandeln musste.

Anzeige

Auf der Suche nach einer Lösung bin ich auf php.net auf eine für diese Aufgabe perfekt geeignete fix und fertige Funktion gestoßen.

function hex2RGB($hexStr, $returnAsString = false, $seperator = ',') {
    $hexStr = preg_replace("/[^0-9A-Fa-f]/", '', $hexStr); // Gets a proper hex string
    $rgbArray = array();
    if (strlen($hexStr) == 6) { //If a proper hex code, convert using bitwise operation. No overhead... faster
        $colorVal = hexdec($hexStr);
        $rgbArray['red'] = 0xFF & ($colorVal >> 0x10);
        $rgbArray['green'] = 0xFF & ($colorVal >> 0x8);
        $rgbArray['blue'] = 0xFF & $colorVal;
    } elseif (strlen($hexStr) == 3) { //if shorthand notation, need some string manipulations
        $rgbArray['red'] = hexdec(str_repeat(substr($hexStr, 0, 1), 2));
        $rgbArray['green'] = hexdec(str_repeat(substr($hexStr, 1, 1), 2));
        $rgbArray['blue'] = hexdec(str_repeat(substr($hexStr, 2, 1), 2));
    } else {
        return false; //Invalid hex color code
    }
    return $returnAsString ? implode($seperator, $rgbArray) : $rgbArray; // returns the rgb string or the associative array
}

Mithilfe dieser Funktion ist es möglich, die einzelnen Rot-, Grün- und Blauwerte einzeln abzurufen, das sieht dann so aus:

$rgb = hex2RGB('#f0f0f0');
// $rgb ist ein Array
// $rgb['red'], $rgb['green'] bzw. $rgb['blue'] können einzeln weiterverarbeitet werden

Auf der anderen Seite hat man die Möglichkeit, den RGB-Wert komplett als String von der Funktion zurückzuverlangen. Diese muss dann wie folgt aufgerufen werden.

$rgb = hex2RGB('f0f0f0', 1);
// $rgb ist in diesem Fall die Zeichenkette: 240,240,240

In letzterem Fall ist es außerdem möglich, das Trennzeichen zu verändern. Standardmäßig wird ein Komma als Trennzeichen verwendet. Gibt man nichts an, wird ein Komma verwendet, was in den meisten Fällen wohl gut passen dürfte.

$rgb = hex2RGB('#f0f0f0', 1, '-');
// $rgb ist in diesem Fall 240-240-240 statt 240,240,240

Praktisch an der Funktion ist auch, dass auch Hex-Codes in Kurzform unterstützt werden. Die Funktionen, die ich ansonsten gefunden habe, konnten das nicht ;-).

PS: Ich habe picoclean 0.4.0 vor einigen Minuten hochgeladen. Spätestens in ein, zwei Tagen dürfte es wohl auf wordpress.org zur Installation (bzw. zum Update) verfügbar sein.

Anzeige


Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert