2010-03-05 53 views
0

可以说,我有以下RGB值:PHP锻炼色彩饱和度

R:129 G:98 B:87

Photoshop的说,颜色的饱和度为33%

我如何计算出使用PHP和RGB值的百分比?

+0

http://stackoverflow.com/questions/1773698/rgb-to-hsv-in-php – oops 2010-03-05 00:56:05

回答

3

RGB to HSV in 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即可得出你的百分比。

+0

完美:)感谢将其重写为更小,在600 * 600循环的每次迭代中运行此操作:P – Ozzy 2010-03-05 01:08:03

+0

如果255'不是传递值之一,则会产生不准确的结果,如果出现黑色错误(' 0,0,0')通过。如果将return语句更改为:'return $ Max? (($ Max - $ Min)/ 255):0;' – 2014-06-24 17:39:25

+0

谢谢,我通过零校正了除法。但是,我不确定为什么第二个'$ Max'应该替换为255,这不是我可以看到的任何其他代码? – rjh 2014-06-24 19:44:36

0

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];