Classify the hexagon in red, green, blue, yellow, orange,

Is there a way to easily assign a given hex color code to a more general category (red, gray, blue, yellow, orange, pink, black, white, gray, ...)?

Like #ffcc55 β†’ orange, #f0f0f0 β†’ white, ...

EDIT: or even just looking like Adobe Photoshop, finding the closest web safe color, so it would reduce the number of colors to 256, would be a great solution!

+4
source share
2 answers

This is from http://php.net/manual/en/function.dechex.php , comment from cory in lavacube dot com:

 <?php function color_mkwebsafe ( $in ) { // put values into an easy-to-use array $vals['r'] = hexdec( substr($in, 0, 2) ); $vals['g'] = hexdec( substr($in, 2, 2) ); $vals['b'] = hexdec( substr($in, 4, 2) ); // loop through foreach( $vals as $val ) { // convert value $val = ( round($val/51) * 51 ); // convert to HEX $out .= str_pad(dechex($val), 2, '0', STR_PAD_LEFT); } return $out; } ?> 

Example: color_mkwebsafe ('0e5c94'); Produces: 006699

+4
source

I am not a php guru, so there may be more efficient ways to solve this problem in php, but I would configure each color as an array, so that you have 3 numbers for each color category. Then find the mathematical distance between the proposed color and each other. Save the closest match and return its name.

 function getcolorname($mycolor) { // mycolor should be a 3 element array with the r,g,b values // as ints between 0 and 255. $colors = array( "red" =>array(255,0,0), "yellow" =>array(255,255,0), "green" =>array(0,255,0), "cyan" =>array(0,255,255), "blue" =>array(0,0,255), "magenta" =>array(255,0,255), "white" =>array(255,255,255), "grey" =>array(127,127,127), "black" =>array(0,0,0) ); $tmpdist = 255*3; $tmpname = "none"; foreach($colors as $colorname => $colorset) { $r_dist = (pow($mycolor[0],2) - pow($colorset[0],2)); $g_dist = (pow($mycolor[1],2) - pow($colorset[1],2)); $b_dist = (pow($mycolor[2],2) - pow($colorset[2],2)); $totaldist = sqrt($r_dist + $g_dist + $b_dist); if ($totaldist < $tmpdist) { $tmpname = $colorname; $tmpdist = $totaldist; } } return $tmpname; } 
+4
source

Source: https://habr.com/ru/post/1434961/


All Articles