PHP выработать насыщенность цвета
Допустим, у меня есть следующие значения RGB:
R: 129 G: 98 B: 87
Фотошоп говорит, что насыщенность этого цвета составляет 33%
Как бы я рассчитал этот процент, используя значения PHP и RGB?
2 ответа
Решение
Смотрите RGB в HSV в PHP
Взять только биты насыщенности из этого кода и преобразовать в процент:
function saturation($R, $G, $B) { // 0-255
$Min = min($R, $G, $B);
$Max = max($R, $G, $B);
return $Max == 0 ? 0 : (($Max - $Min) / $Max) * 100;
}
В качестве альтернативы вы можете использовать исходный код по ссылке выше - значения HSV, которые он возвращает, находятся в диапазоне от 0,0 до 1,0, поэтому вам просто нужно умножить значение насыщенности на 100, чтобы получить ваш процент.
PEAR (PHP Extensions And Application Repository) имеет замечательный пакет Image_Color2, который позволяет быстро конвертировать разные цветовые модели:
include "Image/Color2.php";
$color = new Image_Color2(array(129,98,87));
$hsv = $color->convertTo('hsv');
$hsvArray = $hsv->getArray();
echo "Hue is " . $hsvArray[0] . "\n";
echo "Saturation is: " . $hsvArray[1] . "\n";
echo "Brightness is: " . $hsvArray[2];