Настройка цвета в процентах, как в примере, приведенном Frxstrem, не идеальна.
Если ваш цвет черный (0,0,0 в RGB), вы будете умножаться на ноль, чтоне дает никаких изменений вообще.Если ваш цвет темно-серый (например, 2,2,2 в RGB), вам придется осветлить на 50%, чтобы просто подняться до (3,3,3).С другой стороны, если у вас есть цвет RGB (100,100,100), корректировка на 50% поднимет вас до (150,150,150), что является гораздо большим изменением по сравнению.настроить шаг / число (0-255) вместо процентов, например, вот так (код PHP):
Редактировать 2014-01-06: Немного очистить код.
function adjustBrightness($hex, $steps) {
// Steps should be between -255 and 255. Negative = darker, positive = lighter
$steps = max(-255, min(255, $steps));
// Normalize into a six character long hex string
$hex = str_replace('#', '', $hex);
if (strlen($hex) == 3) {
$hex = str_repeat(substr($hex,0,1), 2).str_repeat(substr($hex,1,1), 2).str_repeat(substr($hex,2,1), 2);
}
// Split into three parts: R, G and B
$color_parts = str_split($hex, 2);
$return = '#';
foreach ($color_parts as $color) {
$color = hexdec($color); // Convert to decimal
$color = max(0,min(255,$color + $steps)); // Adjust color
$return .= str_pad(dechex($color), 2, '0', STR_PAD_LEFT); // Make two char hex code
}
return $return;
}