public function toHSL($red, $green, $blue)
{
$r = $red / 255;
$g = $green / 255;
$b = $blue / 255;
$min = min($r, $g, $b);
$max = max($r, $g, $b);
$d = $max - $min;
$l = ($min + $max) / 2;
if ($min == $max) {
$s = $h = 0;
} else {
if ($l < 0.5) {
$s = $d / (2 * $l);
} else {
$s = $d / (2 - 2 * $l);
}
if ($r == $max) {
$h = 60 * ($g - $b) / $d;
} elseif ($g == $max) {
$h = 60 * ($b - $r) / $d + 120;
} elseif ($b == $max) {
$h = 60 * ($r - $g) / $d + 240;
}
}
return array('hsl', fmod($h, 360), $s * 100, $l * 100);
}