phpbar.de logo

Mailinglisten-Archive

[php] farbige Schrift lesbar machen

[php] farbige Schrift lesbar machen

Ringo Großer swek at gmx.net
Die Mai 9 21:11:30 CEST 2006


Hallo René,

René Thiel wrote:
> kennt jemand eine Funktion oder ein Script, mit der/dem ich farbige
> Schrift lesbar machen kann, also beispielsweise den Helligkeitswert
> einer Schriftfarbe ermittelt (#0b8ce4 zum Beispiel)?
> Wenn die Schriftfarbe hell ist, will ich den Hintergrund dunkel machen
> und umgekehrt.

Da ich im Rahmen meiner captcha Klasse so etwas ähnliches gemacht
hatte, habe ich mal eine Funktion extrahiert und etwas Test-Code
darunter gebaut.
Den Schwellenwert (thresholdlimit) kannst du ja noch nach eigenem
Geschmack einstellen. An dieser Schwelle entscheidet sich Textfarbe
weiß oder schwarz.
Ansonsten nix besonderes. Die Funktion rechnet die einzelnen Anteile
Rot, Grün und Blau (RGB) in Dezimalwerte um und bildet einen Durch-
schnittswert, weil ich davon ausgehe, dass 0 = schwarz und 255 = weiß
ist. Diese 3 Anteile mischen sich ja auch im RGB Modell zusammen.
Der nachfolgende Test bestätigt die Brauchbarkeit :-)

regards, Ringo



function hex2gamma($hex) {
    // auf die Prüfung des Parameters wurde aus Faulheit verzichtet ;-)
    $RGBhex = str_replace('#','',$hex);
    $red = hexdec(substr($RGBhex,0,2));
    $green = hexdec(substr($RGBhex,2,2));
    $blue = hexdec(substr($RGBhex,4,2));
    $gamma = ($red+$green+$blue)/3;
    return $gamma;
}

$hexColors = array(
    '#000000',
    '#eeeeee',
    '#cccccc',
    '#808080',
    '#555555',
    '#222222',
    '#ffffff',
    '#0080ff',
    '#ff8000',
    '#0b8ce4', // dein Testwert
    '#6cbda9',
    '#653b78',
    '#152a49',
    '#3b78d4',
);

foreach ( $hexColors as $color ) {
    $gamma = hex2gamma($color);
    $thresholdlevel = 128;
    if ( $gamma > $thresholdlevel ) $textColor = '#000000';
    else $textColor = '#ffffff';
    echo '<div style="border:1px solid black; margin:4px; width:200px; 
height:50px; background-color:'.$color.'; 
color:'.$textColor.';">'.$color.' ('.$gamma.')</div><br />';
}


php::bar PHP Wiki   -   Listenarchive