从hsl转换为rgb

时间:2012-11-28 01:27:38

标签: php

有没有办法将hsl颜色转换为rgb颜色?我在文档中搜索了这个函数,但此刻似乎没有任何东西可供使用。有没有办法为此创建一个自定义函数,其转换就像$rgb = hslrgb($hsl)一样简单,其中$ hsl和$ rgb数组的相应值?!

1 个答案:

答案 0 :(得分:0)

当然可能......功能就是为此而制作的!这就是我经常用来进行这种转换的方式。它足够准确,即使我正在舍入一些值;)另一方面虽然它很快!!

function hsl2rgb ( $hsl )
{
    $h = $hsl[0]; $s = $hsl[1]; $l = $hsl[2];

    $m2 = ( $l <= 0.5 ) ? $l * ( $s + 1 ) : $l + $s - $l * $s;
    $m1 = $l * 2 - $m2;

    $hue = function ( $base ) use ( $m1, $m2 ) {
        $base = ( $base < 0 ) ? $base + 1 : ( ( $base > 1 ) ? $base - 1 : $base );
        if ( $base * 6 < 1 ) return $m1 + ( $m2 - $m1 ) * $base * 6;
        if ( $base * 2 < 1 ) return $m2;
        if ( $base * 3 < 2 ) return $m1 + ( $m2 - $m1 ) * ( 0.66666 - $base ) * 6;
        return $m1;
    }

    return array( $hue( $h + 0.33333 ), $hue( $h ), $hue( $h - 0.33333 ) );
}