【问题标题】:Get Color Shade with PHP使用 PHP 获取颜色阴影
【发布时间】:2011-07-19 01:59:04
【问题描述】:

我想使用 PHP 从给定的十六进制值中获得更亮的十六进制颜色阴影输出。例如,我将颜色#cc6699 作为输入,我希望#ee88aa 作为输出颜色。我将如何在 PHP 中执行此操作?

【问题讨论】:

    标签: php colors hex


    【解决方案1】:

    您需要将颜色转换为 RGB,进行添加,然后再转换回来:

    // Convert string to 3 decimal values (0-255)
    $rgb = array_map('hexdec', str_split("cc6699", 2));
    
    // Modify color
    $rgb[0] += 34;
    $rgb[1] += 34;
    $rgb[2] += 17;
    
    // Convert back
    $result = implode('', array_map('dechex', $rgb));
    
    echo $result;
    

    See it in action here.

    【讨论】:

    • @Jon 非常感谢您的解决方案很好,我会这样做
    • @Jon Jon 1 我无法理解第三个价值差异 $rgb[2] += 17;请清除我
    • @jon Jon 我的输入值是来自我的数据库的#,我还需要输出值和#hash,以便在我的css中使用,我不喜欢从数据库中更改值,我的结构是 32 + 使用 colorpicker.js 保存的值
    • @Anjum:34 == 0x2217 = 0x110xcc + 0x22 => 0xcc, 0x66 + 0x22 => 0x88, 0x99c + 0x11 => 0xaa。大家一起:#cc6699 => #ee88aa.
    • @Jon 哦,对不起,我明白了
    【解决方案2】:

    1。将颜色分成三个元素:cc、66、99 2.用http://php.net/manual/de/function.hexdec.php将其转换为十进制 3.增加三个十进制值 4.再次将十进制转换为十六进制 5. 将三个元素放在一起

    【讨论】:

      【解决方案3】:

      与您的问题没有直接关系,但这篇文章对颜色转换很有趣:http://beesbuzz.biz/code/hsv_color_transforms.php

      【讨论】:

        【解决方案4】:

        最好的解决方案是将RGB 转换为HSL or HSV(只需在google 中搜索php converter hsl/hsv)。

        然后您可以使用色彩空间的“亮度”或“值”值。

        然后将其转换回 RGB 颜色空间。

        【讨论】:

          猜你喜欢
          • 2012-09-18
          • 2012-09-08
          • 2015-07-14
          • 1970-01-01
          • 2011-12-19
          • 1970-01-01
          • 2018-12-02
          • 2018-10-31
          相关资源
          最近更新 更多