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];    
Другие вопросы по тегам