【问题标题】:Altering Saturation of #RGB Color: Whats Missing Here?改变#RGB 颜色的饱和度:这里缺少什么?
【发布时间】:2011-07-22 13:25:34
【问题描述】:

下面是亮度/饱和度交替程序的概念,带有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*/

【问题讨论】:

    标签: php function colors hex


    【解决方案1】:

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

    【讨论】:

    • 确实 +1 是为了完美,但现在我真的很好,简单、简单和粗糙。顺便说一句,我发现 PHP 从这个确实不正确的程序中给我的值不正确,令人惊讶的是,不知何故我觉得它们是正确的。但那是个人的,我的朋友:)
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 2020-10-29
        • 2011-05-17
        • 1970-01-01
        • 2016-09-25
        • 1970-01-01
        • 2019-10-25
        • 2012-01-20
        • 1970-01-01
        • 2011-12-31
        相关资源
        最近更新 更多