改变#RGB颜色的饱和度:这里有什么缺失?

时间:2011-03-24 23:24:23

标签: php function colors hex

以下是使用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 个答案:

答案 0 :(得分:2)

饱和度和亮度不能相同(有人可能会说你使用这个代码没有正确处理亮度,但它可能足够接近)。有关如何将颜色转换为HSV值,请参阅此问题RGB to HSV in PHP,然后您可以修改饱和度(S值)。然后使用此问题PHP HSV to RGB的答案转换回来。

答案 1 :(得分:1)

我不能用代码回答这个问题,但是这个关于色调和色度的wikipedia article很好地描述了这个理论。

答案 2 :(得分:1)

您可以使用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);