Як визначити колір, близький до кольору з існуючого списку (php)

Перекладаємо число з HEX.

І тепер ми можемо обчислити відстань між кольорами за формулою: d=sqrt((r2-r1)^2+(g2-g1)^2+(b2-b1)^2)

По відстані знаходимо найближчий колір.

Ще як варіант - перевести колір HSV і порівнювати за середнім значенням компоненти HUE. Якщо у вас велика палітра, то буде дешевше в плані обчислень один раз перевести RGB HSV і потім вважати тільки середнє значення.

для картинки можна зробити простіше - нехай функція getClosestColor повертатиме індекс кольору з палітри. Так простіше організувати підрахунок і ми так само знаємо на який колір замінювати.

Виходячи з відповіді @Fesor і Wiki накидав якийсь код (не дуже швидко працює, особливо для великих картинок, але має право на життя):

Як варіант замість: $result[$i] = $colors[$i];

Да я зрозумів. Шлях виконання приблизно такий:

Що у нас є? Масив з базовими кольорами:

Перш ніж знайти щось (у цій ситуації картинки), їх потрібно залити. Сподіваюся заливання буде через web-форму, а не через ftp (у випадку з ftp доведеться раз пробігтися скриптом по вже завантаженим картинкам). Під час заливки зображення записуємо в базу індекси всіх кольорів, які ми отримаємо, прогнавши картинку через скрипт

Пошук за кольором: 1. наприклад, вибрали колір "#ff00ff" => індекс - 2. 2. робимо вибірку по базі: витягнути всі картинки, у яких є індекс кольору "2"