- <?php
- private function Hue_2_RGB( $v1, $v2, $vH ){
- if ( $vH < 0 ) $vH += 1;
- if ( $vH > 1 ) $vH -= 1;
- if ( ( 6 * $vH ) < 1 ) return ( $v1 + ( $v2 - $v1 ) * 6 * $vH );
- if ( ( 2 * $vH ) < 1 ) return ( $v2 );
- if ( ( 3 * $vH ) < 2 ) return ( $v1 + ( $v2 - $v1 ) * ( ( 2 / 3 ) - $vH ) * 6 );
- return ( $v1 );
- }
-
- function tsl2rgb($T,$S,$L){
- //HSL from 0 to 1
- if ( $S == 0 ){
- //RGB results from 0 to 255
- $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 * $this->Hue_2_RGB( $var_1, $var_2, $T + ( 1 / 3 ) );
- $G = 255 * $this->Hue_2_RGB( $var_1, $var_2, $T );
- $B = 255 * $this->Hue_2_RGB( $var_1, $var_2, $T - ( 1 / 3 ) );
- }
- return array("R"=>$R,"G"=>$G,"B"=>$B);
- }
-
- function rgb2tsl($R,$G,$B){
- //RGB from 0 to 255
- $var_R = ( $R / 255 );
- $var_G = ( $G / 255 );
- $var_B = ( $B / 255 );
-
- $var_Min = min( $var_R, $var_G, $var_B ); //Min. value of RGB
- $var_Max = max( $var_R, $var_G, $var_B ); //Max. value of RGB
- $del_Max = $var_Max - $var_Min; //Delta RGB value
-
- $L = ( $var_Max + $var_Min ) / 2;
-
- //This is a gray, no chroma...
- if ( $del_Max == 0 ){
- //HSL results from 0 to 1
- $T = 0;
- $S = 0;
- }
- //Chromatic data...
- else{
- if ( $L < 0.5 ){
- $S = $del_Max / ( $var_Max + $var_Min );
- }else{
- $S = $del_Max / ( 2 - $var_Max - $var_Min );
- }
-
- $del_R = ( ( ( $var_Max - $var_R ) / 6 ) + ( $del_Max / 2 ) ) / $del_Max;
- $del_G = ( ( ( $var_Max - $var_G ) / 6 ) + ( $del_Max / 2 ) ) / $del_Max;
- $del_B = ( ( ( $var_Max - $var_B ) / 6 ) + ( $del_Max / 2 ) ) / $del_Max;
-
- if( $var_R == $var_Max ) $T = $del_B - $del_G;
- else if ( $var_G == $var_Max ) $T = (( 1 / 3 ) + $del_R - $del_B);
- else if ( $var_B == $var_Max ) $T = (( 2 / 3 ) + $del_G - $del_R);
- if ( $T < 0 ){
- $T += 1;
- }
- if ( $T > 1 ) {
- $T -= 1;
- }
- }
- return array("T"=>$T,"S"=>$S,"L"=>$L);
- }
- ?>
<?php
private function Hue_2_RGB( $v1, $v2, $vH ){
if ( $vH < 0 ) $vH += 1;
if ( $vH > 1 ) $vH -= 1;
if ( ( 6 * $vH ) < 1 ) return ( $v1 + ( $v2 - $v1 ) * 6 * $vH );
if ( ( 2 * $vH ) < 1 ) return ( $v2 );
if ( ( 3 * $vH ) < 2 ) return ( $v1 + ( $v2 - $v1 ) * ( ( 2 / 3 ) - $vH ) * 6 );
return ( $v1 );
}
function tsl2rgb($T,$S,$L){
//HSL from 0 to 1
if ( $S == 0 ){
//RGB results from 0 to 255
$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 * $this->Hue_2_RGB( $var_1, $var_2, $T + ( 1 / 3 ) );
$G = 255 * $this->Hue_2_RGB( $var_1, $var_2, $T );
$B = 255 * $this->Hue_2_RGB( $var_1, $var_2, $T - ( 1 / 3 ) );
}
return array("R"=>$R,"G"=>$G,"B"=>$B);
}
function rgb2tsl($R,$G,$B){
//RGB from 0 to 255
$var_R = ( $R / 255 );
$var_G = ( $G / 255 );
$var_B = ( $B / 255 );
$var_Min = min( $var_R, $var_G, $var_B ); //Min. value of RGB
$var_Max = max( $var_R, $var_G, $var_B ); //Max. value of RGB
$del_Max = $var_Max - $var_Min; //Delta RGB value
$L = ( $var_Max + $var_Min ) / 2;
//This is a gray, no chroma...
if ( $del_Max == 0 ){
//HSL results from 0 to 1
$T = 0;
$S = 0;
}
//Chromatic data...
else{
if ( $L < 0.5 ){
$S = $del_Max / ( $var_Max + $var_Min );
}else{
$S = $del_Max / ( 2 - $var_Max - $var_Min );
}
$del_R = ( ( ( $var_Max - $var_R ) / 6 ) + ( $del_Max / 2 ) ) / $del_Max;
$del_G = ( ( ( $var_Max - $var_G ) / 6 ) + ( $del_Max / 2 ) ) / $del_Max;
$del_B = ( ( ( $var_Max - $var_B ) / 6 ) + ( $del_Max / 2 ) ) / $del_Max;
if( $var_R == $var_Max ) $T = $del_B - $del_G;
else if ( $var_G == $var_Max ) $T = (( 1 / 3 ) + $del_R - $del_B);
else if ( $var_B == $var_Max ) $T = (( 2 / 3 ) + $del_G - $del_R);
if ( $T < 0 ){
$T += 1;
}
if ( $T > 1 ) {
$T -= 1;
}
}
return array("T"=>$T,"S"=>$S,"L"=>$L);
}
?>