Я использую класс извлечения цвета PHP, который я нашел в GitHub для проекта, над которым я работаю.
Color Extractor Class
https://github.com/humanmade/Colors-Of-Image
Вопрос у меня есть, есть ли способ сгруппировать цвета по основным цветам.
Пример: если вы возьмете красный цвет, выше класса даст
#ff0000
#e50000
#cc0000
так в зависимости от изображения. Что я хочу сделать, это сделать все эти цвета как красные, прежде чем я сохраню в базе данных.
Есть ли какая-нибудь формула для проверки цветовой гаммы? Я ищу несколько дней, но не могу найти никакой информации. Цените свое время.
Это действительно зависит от того, сколько групп вы хотели бы иметь, НО, поскольку три пары отвечают за КРАСНЫЙ-ЗЕЛЕНЫЙ-СИНИЙ, вы можете разделить всю строку (без хеша) на пары, а затем вычислить каждую пару в десятичную с hexdec
и посмотрите, находятся ли они в определенном диапазоне по вашему выбору.
То есть: если результат hexdec намного больше, чем сумма второй и третьей пары, вы, скорее всего, смотрите на какой-то вариант красного цвета.
образец кода:
$colors = [
'#ff0000',
'#e50000',
'#cc0000',
];
foreach ($colors as $hex){
list($redHex,$greenHex,$blueHex) = str_split(trim($hex,'#'),2);
$redVal = hexdec($redHex);
$greenVal = hexdec($greenHex);
$blueVal = hexdec($blueHex);
if($redVal > $greenVal+$blueVal){
echo $hex.' is most likely red';
}
}
Других решений пока нет …