Caz practic:
Ai un colorbox unde dai voie utilizatorului sa-si aleaga ce culoare de fundal sa aiba un anumit element (cum sunt label-urile in gmail).
Trebuie intr-un fel sa-ti dai seama daca a ales o culoare inchisa sau deschisa ca sa poti scrie peste culoarea respectiva si sa fie citibil. Nu poti sa pui text negru peste background negru.
Asadar:
function nuanta($background) {
$color = str_replace('#', '', $background);
$rgb = array();
for ($x=0;$x<3;$x++){
$rgb[$x] = hexdec(substr($color,(2*$x),2));
}
$total = array_sum($rgb);
if($total <=381) {
return'inchis';
}
else {
return'deschis';
}
}
// exemplu folosire
$culoare = '#FF0033'; // rosu, deci inchis
$nuanta = nuanta($culoare);
if($nuanta == "inchis") {
// scrie cu culoare deschisa
}
else {
//scrie cu culoare inchisa
}