Палитра от цветове

dakata__92

Super Moderator
Здравейте. Има ли начин да въведа шестнадесетичен цвят примерно 000000 и в рамките на до 5% изсветляване или потъмняване да ми създаде масив с цветова палитра? Тоест търся някаква поредност на цветовете от въведен цвят. Например черно, малко по-светло черно и така до някакъв процент.
 
На пръв поглед:
1) конвертирай hex към hsl (hue, saturation, lightness);
2) промени lightness компонентата;
3) конвертирай обратно към hex.
 
Намерих една функция която може би ще ти свърши работа. Реално обаче наистина е по-правилно да конвертираш към HSL и да промениш lightness параметъра.

Код:
/**
 * Increases or decreases the brightness of a color by a percentage of the current brightness.
 *
 * @param   string  $hexCode        Supported formats: `#FFF`, `#FFFFFF`, `FFF`, `FFFFFF`
 * @param   float   $adjustPercent  A number between -1 and 1. E.g. 0.3 = 30% lighter; -0.4 = 40% darker.
 *
 * @return  string
 *
 * @author  maliayas
 */
function adjustBrightness($hexCode, $adjustPercent) {
    $hexCode = ltrim($hexCode, '#');

    if (strlen($hexCode) == 3) {
        $hexCode = $hexCode[0] . $hexCode[0] . $hexCode[1] . $hexCode[1] . $hexCode[2] . $hexCode[2];
    }

    $hexCode = array_map('hexdec', str_split($hexCode, 2));

    foreach ($hexCode as & $color) {
        $adjustableLimit = $adjustPercent < 0 ? $color : 255 - $color;
        $adjustAmount = ceil($adjustableLimit * $adjustPercent);

        $color = str_pad(dechex($color + $adjustAmount), 2, '0', STR_PAD_LEFT);
    }

    return '#' . implode($hexCode);
}
 

Back
Горе