Нарыл код 2007 года (спасибо доброму человеку), вроде простой, но короче...адаптирую сейчас под себя :)
$data= array (
0 => '#ff28c9',
1 => '#a82a00',
2 => '#5340ff',
);
$colorIndexes = array (
'Черный' => array ('r' => 0, 'g' => 0, 'b' => 0),
'Синий' => array ('r' => 0, 'g' => 0, 'b' => 255),
'Зеленый' => array ('r' => 0, 'g' => 255, 'b' => 0),
'Голубой' => array ('r' => 0, 'g' => 255, 'b' => 255),
'Красный' => array ('r' => 255, 'g' => 0, 'b' => 0),
'Фиолетовый' => array ('r' => 255, 'g' => 0, 'b' => 255),
'Оранжевый' => array ('r' => 255, 'g' => 127, 'b' => 0),
'Желтый' => array ('r' => 255, 'g' => 255, 'b' => 0),
'Белый' => array ('r' => 255, 'g' => 255, 'b' => 255),
);
function checkColor ($colorHEX) {
global $colorIndexes
$color = substr($colorHEX, 1);
$color = str_split($color, 2);
$colorind = array('r' => hexdec($color[0]), 'g' => hexdec($color[1]), 'b' => hexdec($color[2]));
$score = array();
foreach ($colorIndexes as $color => $index) {
$score[$color] = abs($index["r"] - $colorind["r"]) + abs($index["g"] - $colorind["g"]) + abs($index["b"] - $colorind["b"]);
}
return array_search(min($score), $score);
}
foreach ($data as $color) {
echo checkColor($color).'<br>';
}
_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.