php function problem with color -
i have made function returns color based on rgb color (used @ param)
but have problem color (100,76,66). brown color function returns dark olive green.
is there mistake in function ?
example:
$str_color = getcolornamebyrgbcolors('100,76,66'); echo $str_color; function getcolornamebyrgbcolors($str_comma_sep_rbg) { /* php function colorname problem */ $arr_input = explode(',', $str_comma_sep_rbg); // dark olive green // based on --> http://www.w3.org/tr/svg/types.html#colorkeywords $arr_colors = array( 'alice blue' => array(240, 248, 255), 'antique white' => array(250, 235, 215), 'aqua' => array(0, 255, 255), // *** 'aquamarine' => array(127, 255, 212), 'azure' => array(240, 255, 255), 'beige' => array(245, 245, 220), 'bisque' => array(255, 228, 196), 'black' => array(0, 0, 0), 'blanched almond' => array(255, 235, 205), 'blue' => array(0, 0, 255), 'blue violet' => array(138, 43, 226), 'brown' => array(165, 42, 42), 'burlywood' => array(222, 184, 135), 'cadet blue' => array(95, 158, 160), 'chartreuse' => array(127, 255, 0), 'chocolate' => array(210, 105, 30), 'coral' => array(255, 127, 80), 'cornflower blue' => array(100, 149, 237), 'cornsilk' => array(255, 248, 220), 'crimson' => array(220, 20, 60), // *** 'cyan' => array(0, 255, 255), 'dark blue' => array(0, 0, 139), 'dark cyan' => array(0, 139, 139), 'dark goldenrod' => array(184, 134, 11), 'dark green' => array(0, 100, 0), 'dark grey' => array(169, 169, 169), 'dark khaki' => array(189, 183, 107), 'dark magenta' => array(139, 0, 139), 'dark olive green' => array(85, 107, 47), 'dark orange' => array(255, 140, 0), 'dark orchid' => array(153, 50, 204), 'dark red' => array(139, 0, 0), 'dark salmon' => array(233, 150, 122), 'dark sea green' => array(143, 188, 143), 'dark slate blue' => array(72, 61, 139), 'dark slate gray' => array(47, 79, 79), 'dark turquoise' => array(0, 206, 209), 'dark violet' => array(148, 0, 211), 'deep pink' => array(255, 20, 147), 'deep sky blue' => array(0, 191, 255), 'dim gray' => array(105, 105, 105), 'dodger blue' => array(30, 144, 255), 'firebrick' => array(178, 34, 34), 'floral white' => array(255, 250, 240), 'forest green' => array(34, 139, 34), 'fuchsia' => array(255, 0, 255), // **** 'gainsboro' => array(220, 220, 220), 'ghost white' => array(248, 248, 255), 'gold' => array(255, 215, 0), 'goldenrod' => array(218, 165, 32), 'grey' => array(128, 128, 128), 'green' => array(0, 128, 0), 'green yellow' => array(173, 255, 47), 'honeydew' => array(240, 255, 240), 'hot pink' => array(255, 105, 180), 'indian red' => array(205, 92, 92), 'indigo' => array(75, 0, 130), 'ivory' => array(255, 255, 240), 'khaki' => array(240, 230, 140), 'lavender' => array(230, 230, 250), 'lavender blush' => array(255, 240, 245), 'lawn green' => array(124, 252, 0), 'lemon chiffon' => array(255, 250, 205), 'light blue' => array(173, 216, 230), 'light coral' => array(240, 128, 128), 'light cyan' => array(224, 255, 255), 'light goldenrod yellow'=> array(250, 250, 210), 'light gray' => array(211, 211, 211), 'light green' => array(144, 238, 144), 'light pink' => array(255, 182, 193), 'light salmon' => array(255, 160, 122), 'light sea green' => array(32, 178, 170), 'light sky blue' => array(135, 206, 250), 'light slate gray' => array(119, 136, 153), 'light steel blue' => array(176, 196, 222), 'light yellow' => array(255, 255, 224), 'lime' => array(0, 255, 0), 'lime green' => array(50, 205, 50), 'linen' => array(250, 240, 230), 'magenta' => array(255, 0, 255), // ****d 'maroon' => array(128, 0, 0), 'medium aquamarine' => array(102, 205, 170), 'medium blue' => array(0, 0, 205), 'medium orchid' => array(186, 85, 211), 'medium purple' => array(147, 112, 219), 'medium sea green' => array(60, 179, 113), 'medium slate blue' => array(123, 104, 238), 'medium spring green' => array(0, 250, 154), 'medium turquoise' => array(72, 209, 204), 'medium violet red' => array(199, 21, 133), 'midnight blue' => array(25, 25, 112), 'mint cream' => array(245, 255, 250), 'misty rose' => array(255, 228, 225), 'moccasin' => array(255, 228, 181), 'navajo white' => array(255, 222, 173), 'navy' => array(0, 0, 128), 'old lace' => array(253, 245, 230), 'olive' => array(128, 128, 0), // **** 'olive drab' => array(107, 142, 35), 'orange' => array(255, 165, 0), 'orange red' => array(255, 69, 0), 'orchid' => array(218, 112, 214), 'pale goldenrod' => array(238, 232, 170), 'pale green' => array(152, 251, 152), 'pale turquoise' => array(175, 238, 238), 'pale violet red' => array(219, 112, 147), 'papaya whip' => array(255, 239, 213), 'peach puff' => array(255, 218, 185), 'peru' => array(205, 133, 63), 'pink' => array(255, 192, 203), 'plum' => array(221, 160, 221), 'powder blue' => array(176, 224, 230), 'purple' => array(128, 0, 128), 'red' => array(255, 0, 0), 'rosy brown' => array(188, 143, 143), 'royal blue' => array(65, 105, 225), 'saddle brown' => array(139, 69, 19), 'salmon' => array(250, 128, 114), 'sandy brown' => array(244, 164, 96), 'sea green' => array(46, 139, 87), 'seashell' => array(255, 245, 238), 'sienna' => array(160, 82, 45), 'silver' => array(192, 192, 192), 'sky blue' => array(135, 206, 235), 'slate blue' => array(106, 90, 205), 'slate gray' => array(112, 128, 144), 'snow' => array(255, 250, 250), 'spring green' => array(0, 255, 127), 'steel blue' => array(70, 130, 180), 'tan' => array(210, 180, 140), 'teal' => array(0, 128, 128), 'thistle' => array(216, 191, 216), 'tomato' => array(255, 99, 71), 'turquoise' => array(64, 224, 208), 'violet' => array(238, 130, 238), 'wheat' => array(245, 222, 179), 'white' => array(255, 255, 255), 'white smoke' => array(245, 245, 245), 'yellow' => array(255, 255, 0), 'yellow green' => array(154, 205, 50) ); foreach($arr_colors $key=>$color) { // $diff = abs($arr_input[0] - $color[0]) + abs($arr_input[1] - $color[1]) + abs($arr_input[2] - $color[2]); // code looks right, ran , got silver. however, tried squaring differences in components , got (what thought was) better answer: lichtsteelblue. here's code used: $diff = pow($arr_input[0] - $color[0],2) + pow($arr_input[1] - $color[1], 2) + pow($arr_input[2] - $color[2], 2); $array[$key] = $diff; } asort($array); reset($array); list($key, $diff) = each($array); return $key; }
where brown colour code (100,76,66). dont have , return false statements if search unsuccessfull
Comments
Post a Comment