Изменение насыщенности цвета #RGB: чего здесь не хватает? - PullRequest
2 голосов
/ 25 марта 2011

Ниже приведена концепция программы изменения яркости / насыщенности с brightness() и saturation().

function brightness($colorstr, $steps) { 
    ...
    return sprintf("%02x%02x%02x", $r, $g, $b);
} 
function saturation(){ 
    ...
    return sprintf("%02x%02x%02x", $r, $g, $b);
}

Существуют ли какие-либо простые в использовании онлайн-моды, которые дополняют эту модель, делают следующее возможным:

$color2 = saturation($color,-10); /* less staurated*/
$color3 = saturation($color,+10); /* more staurated*/

Ответы [ 3 ]

2 голосов
/ 25 марта 2011

Насыщенность и яркость нельзя обрабатывать одинаково (можно утверждать, что вы неправильно обрабатываете яркость, используя этот код, но, вероятно, он достаточно близок).См. Этот вопрос RGB в HSV в PHP , чтобы узнать, как преобразовать цвет в значение HSV, а затем изменить насыщенность (значение S).Затем преобразуйте обратно, используя ответ на этот вопрос PHP HSV в RGB .

1 голос
/ 04 сентября 2018

Вы можете легко сделать это, используя библиотеку phpColors:

После включения в ваш проект вы можете связываться с насыщенностью следующим образом:

use Mexitek\PHPColors\Color;

// Convert my HEX
$myBlue = Color::hexToHsl("#336699");

// Get crazy with the saturation
$myBlue["S"] = 0.2;

// Gimme my new color!!
echo Color::hslToHex($myBlue);
1 голос
/ 25 марта 2011

Я не могу ответить на этот вопрос кодом, но я статья в Википедии о оттенке и цвете очень хорошо описывает теорию.

...