function image_rgb2hsv ($R,$G,$B) { $var_R = ( $R / 255 ) ; //Where RGB values = 0 ÷ 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 $V = $var_Max; $L = ( $var_Max + $var_Min ) / 2; if ( $del_Max == 0 ) //This is a gray, no chroma... { $H = 0 ; //HSL results = 0 ÷ 1 $S = 0 ; } else //Chromatic data... { $S = $del_Max / $var_Max; $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 ) $H = $del_B - $del_G; else if ( $var_G == $var_Max ) $H = ( 1 / 3 ) + $del_R - $del_B; else if ( $var_B == $var_Max ) $H = ( 2 / 3 ) + $del_G - $del_R; if ( $H < 0 ) $H = $H + 1; if ( $H > 1 ) $H = $H - 1; } $ret["h"] = $H; $ret["s"] = $S; $ret["v"] = $V; return $ret; }