Mit Hilfe des folgenden PHP-Schnipsels kann eine Farbangabe invertiert werden. Ich habe dabei den Quelltext so gut es geht dokumentiert, weshalb er auch selbsterklärend sein sollte. Wer Interesse hat, kann den nachfolgenden Quelltext gerne unter Berücksichtigung der GNU AGPL weiterverwenden und/oder erweitern.
Auch noch interessant: Liste webkompatibler Farbnamen, Hexadezimale Farbangaben in ihr RGB-Äquivalent umwandeln und umgekehrt
/**
* Eine kleine Klasse, um eine Farbe zu invertieren.
*
* @author Pascal Hollenstein <webmaster@zockerade.com>
* @version 1.0
* @license GNU AGPL
*/
class invert_color {
/**
* Invertiert eine Farbe in hexadezimaler Schreibweise.
*
* Beispiel:
*
* invert_color::hex("#e2b4c5")
*
* Rückgabe:
*
* #1d4b3a
*
* Im Falle eines Fehlers gibt die Funktion "false" zurück.
*
* @access public static
* @param string $color
* @return mixed
*/
public static function hex($color) {
if (is_string($color) != false) {
$color = substr($color, 1);
if (ctype_xdigit($color) && strlen($color) == 6) {
$rgb = array("00", "00", "00");
for ($i = 0; $i < 3; $i++) {
$color_part = substr($color, 2 * $i, 2);
if (- hexdec($color_part) + 255 > 0) {
$rgb[$i] = str_pad(dechex(- hexdec($color_part) + 255), 2, "0", STR_PAD_LEFT);
}
}
return '#'.implode($rgb);
}
}
return false;
}
/**
* Invertiert eine Farbe mit den angegebenen RGB-Werten.
*
* Beispiel:
*
* invert_color:rgb(
* array(
* 226,
* 180,
* 197
* )
* )
*
* Rückgabe:
*
* array(
* 29,
* 75,
* 58
* )
*
* Im Falle eines Fehlers gibt die Funktion "false" zurück.
*
* @access public static
* @param array $color
* @return mixed
*/
public static function rgb($color) {
if (is_array($color) && count($color) == 3) {
$rgb = array();
foreach ($color as $value) {
if (ctype_digit($value) == false || $value < 0 || $value > 255) {
return false;
}
$rgb[] = str_pad(- $value + 255 > 0 ? - $value + 255 : "00", 2, "0", STR_PAD_LEFT);
}
return $rgb;
}
return false;
}
}