function contraster(&$backgroundcolor, &$textcolor) { if ($textcolor == "#000000") { $c_backgroundcolor = new color(); $c_backgroundcolor->set_from_rgbhex(substr($backgroundcolor, 1, 6)); // il y a un bug dans la méthode set_from_rgbhex de la classe color (à cause de #) // je fixe ici en utilisant substr mais il faudrait le faire dans la classe //$c_backgroundcolor->set_from_rgb(0,0,255); //echo "avant="; //print_r($c_backgroundcolor->get_luv()); //echo "<br/>"; //echo "apres="; //print_r($c_backgroundcolor->get_luv()); //echo "<br/>"; $luv = $c_backgroundcolor->get_luv(); /* si la luminosité est supérieur à une certaine valeur on ne la change pas si elle est inférieur on la fixe à une constante */ $lum_min = 50; if ($luv[0] < $lum_min) { $luv[0] = $lum_min; } $c_backgroundcolor->set_from_luv($luv[0], $luv[1], $luv[2]); $backgroundcolor = "#" . $c_backgroundcolor->get_rgbhex(); } else { throw new Exception('Impossible car la couleur de texte n\'est pas noire !!!'); } }