a = #333333
需要这个函数:把a的色彩变深一点,比如a=#222222
回复讨论(解决方案) $a = #333333;$rgb = unpack('c*', pack('h*', substr($a, 1)));$hsb = call_user_func_array('rgb2hsb', $rgb);$hsb[2] *= 0.67;$rgb = call_user_func_array('hsb2rgb', $hsb);echo '#' . join('', array_map('dechex', $rgb));function rgb2hsb($rgbr, $rgbg, $rgbb) { $rgbr &= 255; $rgbg &= 255; $rgbb &= 255; $rgb = array($rgbr, $rgbg, $rgbb ); sort($rgb); $max = $rgb[2]; $min = $rgb[0]; $hsbb = $max / 255.0; $hsbs = $max == 0 ? 0 : ($max - $min) / $max; $hsbh = 0; if ($max == $rgbr && $rgbg >= $rgbb) { $hsbh = ($rgbg - $rgbb) * 60 / (($m = $max - $min) ? $m : 1); } else if ($max == $rgbr && $rgbg < $rgbb) { $hsbh = ($rgbg - $rgbb) * 60 / ($max - $min) + 360; } else if ($max == $rgbg) { $hsbh = ($rgbb - $rgbr) * 60 / ($max - $min) + 120; } else if ($max == $rgbb) { $hsbh = ($rgbr - $rgbg) * 60 / ($max - $min) + 240; } return array( $hsbh, $hsbs, $hsbb );} function hsb2rgb($h, $s, $v) { $r = $g = $b = 0; $i = ($h / 60) % 6; $f = ($h / 60) - $i; $p = $v * (1 - $s); $q = $v * (1 - $f * $s); $t = $v * (1 - (1 - $f) * $s); switch ($i) { case 0: $r = $v; $g = $t; $b = $p; break; case 1: $r = $q; $g = $v; $b = $p; break; case 2: $r = $p; $g = $v; $b = $t; break; case 3: $r = $p; $g = $q; $b = $v; break; case 4: $r = $t; $g = $p; $b = $v; break; case 5: $r = $v; $g = $p; $b = $q; break; default: break; } return array( intval($r * 255), intval($g * 255), intval($b * 255) );}
#222222
感谢!