Изменение насыщенности цвета #RGB: чего здесь не хватает?
Ниже приводится концепция для программы alterarion яркости/насыщенности с 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 ответов:
Насыщенность и яркость не могут быть обработаны одинаково (можно утверждать, что вы не обрабатываете яркость правильно, используя этот код, но это, вероятно, достаточно близко). Смотрите этот вопрос RGB to HSV в PHP для того, как преобразовать цвет в значение HSV, то вы можете изменить насыщенность (значение S). Затем преобразуйте обратно, используя ответ на этот вопрос PHP HSV в RGB .
Я не могу ответить на это с помощью кода, но я это статья Википедии о оттенке и цветности очень хорошо описывает теорию.
Это легко сделать с помощью библиотеки 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);
Comments