1

その場でhsl色をrgb色に変換する方法はありますか?ドキュメントでこの関数を検索しましたが、現時点ではこのような機能は利用できないようです。$rgb = hslrgb($hsl)対応する値の$hsl配列と$rgb配列の両方の場合と同じくらい簡単に変換できる、このためのカスタム関数を作成する方法はありますか?!

4

1 に答える 1

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 ) );
}
于 2012-11-28T01:29:09.890 に答える