30 $r = hexdec(substr($rgb, 1, 2));
31 $g = hexdec(substr($rgb, 3, 2));
32 $b = hexdec(substr($rgb, 5, 2));
47 $minval = min($red, min($green, $blue));
48 $maxval = max($red, max($green, $blue));
49 $mdiff = $maxval - $minval + 0.0;
50 $msum = $maxval + $minval + 0.0;
51 $luminance = $msum / 510.0;
54 if ($maxval == $minval) {
57 $rnorm = ($maxval - $red) / $mdiff;
58 $gnorm = ($maxval - $green) / $mdiff;
59 $bnorm = ($maxval - $blue) / $mdiff;
60 $saturation = ($luminance <= 0.5) ? ($mdiff / $msum) : ($mdiff / (510.0 - $msum));
61 if ($red == $maxval) $hue = 60.0 * (6.0 + $bnorm - $gnorm);
62 if ($green == $maxval) $hue = 60.0 * (2.0 + $rnorm - $bnorm);
63 if ($blue == $maxval) $hue = 60.0 * (4.0 + $gnorm - $rnorm);
64 if ($hue > 360.0) $hue-= 360.0;
77 if ($rh > 360.0) $rh-= 360.0;
78 if ($rh < 0.0) $rh+= 360.0;
79 if ($rh < 60.0) $retval = $rm1 + ($rm2 - $rm1) * $rh / 60.0;
80 else if ($rh < 180.0) $retval = $rm2;
81 else if ($rh < 240.0) $retval = $rm1 + ($rm2 - $rm1) * (240.0 - $rh) / 60.0;
82 return round($retval * 255);
97 if ($saturation == 0.0) {
98 $red = $green = $blue = round($luminance * 255.0);
100 if ($luminance <= 0.5) $rm2 = $luminance + $luminance * $saturation;
101 else $rm2 = $luminance + $saturation - $luminance * $saturation;
102 $rm1 = 2.0 * $luminance - $rm2;
103 $red =
Magic($rm1, $rm2, $hue + 120.0);
104 $green =
Magic($rm1, $rm2, $hue);
105 $blue =
Magic($rm1, $rm2, $hue - 120.0);
107 return sprintf(
"#%02X%02X%02X", $red, $green, $blue);