如何在php中动态创建15%的浅色

时间:2014-01-12 08:44:45

标签: php dynamic colors hex

例如,我有一个十六进制颜色代码,如#00ff00

我想使用php或javascript或jQuery创建或找到15%的浅色代码..

欢迎任何小到最好的解决方案。

提前感谢你的时间

1 个答案:

答案 0 :(得分:2)

在这里你可以找到两种方法,将HTML hexa颜色代码转换为十进制和后退。

Converter methods

使用这些可以将十六进制颜色代码解析为三位十进制数字。在此之后你可以做你的转型。我不是色彩专家,但你可以让它们的强度提高15%。我不确定这是你的意图,但你可以这样做:

function html2rgb($color)
{
    if ($color[0] == '#')
        $color = substr($color, 1);

    if (strlen($color) == 6)
        list($r, $g, $b) = array($color[0].$color[1],
                                 $color[2].$color[3],
                                 $color[4].$color[5]);
    elseif (strlen($color) == 3)
        list($r, $g, $b) = array($color[0].$color[0], $color[1].$color[1], $color[2].$color[2]);
    else
        return false;

    $r = hexdec($r); $g = hexdec($g); $b = hexdec($b);

    return array($r, $g, $b);
}

function rgb2html($r, $g=-1, $b=-1)
{
    if (is_array($r) && sizeof($r) == 3)
        list($r, $g, $b) = $r;

    $r = intval($r); $g = intval($g);
    $b = intval($b);

    $r = dechex($r<0?0:($r>255?255:$r));
    $g = dechex($g<0?0:($g>255?255:$g));
    $b = dechex($b<0?0:($b>255?255:$b));

    $color = (strlen($r) < 2?'0':'').$r;
    $color .= (strlen($g) < 2?'0':'').$g;
    $color .= (strlen($b) < 2?'0':'').$b;
    return '#'.$color;
}

$hexa = "#CCDDEE";
$rgb = html2rgb($hexa)

// Do the transformation you would like to do
$rgb[0] *=1.15;
$rgb[2] *=1.15;
$rgb[3] *=1.15;

$hexa = rgb2html($rgb);

我没有测试过这个解决方案。这只是一个想法,你可以去。

使用CSS可能更容易。 CSS支持rgb颜色,如:

p
{
    background-color:rgb(255,0,255);
}

通过这种方式,您可以节省转换的所有工作量,并避免这些转换可能出现的问题。