Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
 
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> Определение цвета по коду, подкиньте идейку
GET  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



TERRAFORMING ENGINEER
******

Профиль
Журнал
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 3847
Пользователь №: 21196
На форуме: 6 лет, 9 месяцев, 7 дней
Карма: 87




Привет.


Не могу решить задачку, может кто подкинет индейку.

Есть код цвета, например пурпурный: #993366

Есть 7 цветов радуги, как определить к какому цвету этот цвет наиболее близок т.е. в данном случае назвать его фиолетовым?


--------------------
Не тот велик, кто не падал, а тот кто падал и поднимался.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
dimonise  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 408
Пользователь №: 18713
На форуме: 7 лет, 3 месяца, 24 дня
Карма: 0

Трезвый :
6 лет, 7 месяцев, 1 день


хм. интересный вопрос. я так думаю нужно рыть в сторону вообще изначального назначения кодировки цветов, т.е. по какому принципу цвета получили коды. а потом уже сделать 7 групп кодов. может я не прав. может есть решение проще.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
GET  
 ۩  [x] Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



TERRAFORMING ENGINEER
******

Профиль
Журнал
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 3847
Пользователь №: 21196
На форуме: 6 лет, 9 месяцев, 7 дней
Карма: 87




Нарыл код 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>';

}


--------------------
Не тот велик, кто не падал, а тот кто падал и поднимался.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
sergeiss  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Сидел он, дум великих полон - и вдаль глядел
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 14980
Пользователь №: 4190
На форуме: 8 лет, 10 месяцев, 4 дня
Карма: 444




Мне так кажется, навскидку, что лучше брать не сумму модулей разностей, а сумму квадратов разностей. Тогда это будет, по сути, расстояние до определенной точки в 3-х мерном пространстве. До которой из 3-х точек расстояние меньше, к той и относится данный цвет.
А эта сумма модулей разности... Каков физический/математический смысл?

Я вот про эту формулу говорю:
abs($index["r"] - $colorind["r"]) + abs($index["g"] - $colorind["g"]) + abs($index["b"] - $colorind["b"])


--------------------
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
PMICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
kristall  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



418 I'm a teapot
******

Профиль
Журнал
Группа: Форумчанин
Завсегдатай форума
Сообщений: 647
Пользователь №: 28374
На форуме: 5 лет, 5 месяцев, 25 дней
Карма: 22




Мне попадался алгоритм перевода длины волны в значения RGB (wavelength to RGB), а тут, походу, обратная задача.
http://www.midnightkite.com/color.html


--------------------
echo '<pre>',print_r($var, 1);die;

root@server# make love && war
PMПисьмо на e-mail пользователюICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Ron  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1048
Пользователь №: 41686
На форуме: 1 год, 4 месяца, 2 дня
Карма: 14




А если цвет будет одинаково удален от красного и оранжевого?


--------------------
Жду 5.11.2017
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
GET  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



TERRAFORMING ENGINEER
******

Профиль
Журнал
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 3847
Пользователь №: 21196
На форуме: 6 лет, 9 месяцев, 7 дней
Карма: 87




Спасибо.


--------------------
Не тот велик, кто не падал, а тот кто падал и поднимался.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темы Ответ в темуСоздание новой темыСоздание опроса