/**
 * Converts a color from HSL to RGB color space
 *
 * @param H hue from 0 to 1 (map from 0 to 360 degrees of hue)
 * @param S saturation from 0 to 1 (percentage: 0=colorless, 1=colorful)
 * @param L lightness from 0 to 1 (percentage: 0=black, 0.5=std, 1=white)
 * @return a 3-element array corresponding to RGB components (0-255 of each)
 */
function hsl2rgb($H, $S, $L)
{
    // shade of gray
    if ($S == 0) {
        $r = $L * 255;
        $g = $L * 255;
        $b = $L * 255;
    } else {
        if ($L < 0.5) {
            $var_2 = $L * (1 + $S);
        } else {
            $var_2 = $L + $S - $S * $L;
        }
        $var_1 = 2 * $L - $var_2;
        $r = 255 * hue_2_rgb($var_1, $var_2, $H + 1 / 3);
        $g = 255 * hue_2_rgb($var_1, $var_2, $H);
        $b = 255 * hue_2_rgb($var_1, $var_2, $H - 1 / 3);
    }
    $RGB = array();
    $RGB[] = round($r);
    $RGB[] = round($g);
    $RGB[] = round($b);
    return $RGB;
}
示例#2
0
/**
 * Transformation d'une couleur HSL en RGB
 * HSL float entre 0 et 1
 * RGB entiers entre 0 et 255
 *
 * @param float $H
 * @param float $S
 * @param float $L
 * @return array
 */
function _couleur_hsl2rgb($H, $S, $L)
{
    if ($S == 0) {
        $R = $L * 255;
        $G = $L * 255;
        $B = $L * 255;
    } else {
        if ($L < 0.5) {
            $var_2 = $L * (1 + $S);
        } else {
            $var_2 = $L + $S - $S * $L;
        }
        $var_1 = 2 * $L - $var_2;
        $R = 255 * hue_2_rgb($var_1, $var_2, $H + 1 / 3);
        $G = 255 * hue_2_rgb($var_1, $var_2, $H);
        $B = 255 * hue_2_rgb($var_1, $var_2, $H - 1 / 3);
    }
    $ret["r"] = floor($R);
    $ret["g"] = floor($G);
    $ret["b"] = floor($B);
    return $ret;
}
示例#3
0
/**
 * Transformation d'une couleur HSL en RGB
 * HSL float entre 0 et 1
 * RGB entiers entre 0 et 255
 *
 * @param float $H
 * @param float $S
 * @param float $L
 * @return array
 */
function _couleur_hsl2rgb ($H,$S,$L) {
	
	if ( $S == 0 )                       //HSV values = 0 -> 1
	{
	   $R = $V * 255;
	   $G = $V * 255;
	   $B = $V * 255;
	}
	else
	{
		if ( $L < 0.5 ) $var_2 = $L * ( 1 + $S );
		else            $var_2 = ( $L + $S ) - ( $S * $L );

		$var_1 = 2 * $L - $var_2;

		$R = 255 * hue_2_rgb( $var_1, $var_2, $H + ( 1 / 3 ) ) ;
		$G = 255 * hue_2_rgb( $var_1, $var_2, $H );
		$B = 255 * hue_2_rgb( $var_1, $var_2, $H - ( 1 / 3 ) );
	}
	$ret["r"] = floor($R);
	$ret["g"] = floor($G);
	$ret["b"] = floor($B);
	
	return $ret;
}