Wpis z mikrobloga

Mirki! Ratuneczku! Potrzebuję podpowiedzi na temat wyszukiwania zdjęć po kolorach we frameworku Laravel 5.2 (język PHP).
Mianowicie, mam napisany system, w którym uploaduję zdjęcie na serwer oraz zapisuje jego dane do bazy danych mysql. Zapisuje się tam nazwa pliku, oraz 5 dominujących kolorów w danym zdjęciu (wybiera te kolory taki moduł jak Color Extractor stworzony pod Laravela). Kolory te zapisują się do bazy po przecinku np. #ffffff, #000000 itd. Nie jako tablica. Na innej podstronie zaś, mam inputa z value np. #ffffff, po jego zatwierdzeniu w formularzu GET, wysyła nam do controllera informacje z kolorem, a następnie szuka zdjęcia, które posiada w bazie kolor z inputa. Czyli na dobrą sprawę, zdjęcie by musiało mieć w tych 5 kolorach wartość #ffffff, a to się prawdopodobnie nie zdarzy, gdyż zdjęcia są z wieloma pixelami kolorów.

Jak mam zrobić jakby takie coś, że ma szukać nam zdjęcia z np. tym kodem HEX #ffffff ale też z jego wszystkimi odcieniami? Np. #fefefe, itd w dół czy w górę.

#webdev #webdesign #php #laravel
  • 5
@pr0h4x0r: hey :) ja to widze tak, ze musialabys policzyc 'odleglosc' miedzy szukanym kolorem (tym z $_GET-a) a kazdym z tych 5 kolorow - na pewno jest jakis algorytm liczenia odleglosci dwoch kolorow - z tym ze to liczenie musialabys przeprowadzic na poziomie bazy danych w zapytaniu :) ogolnie - do zrobienia :)
@pr0h4x0r: Matematyczny dystans między kolorami możesz policzyć tak:

dystans = sqrt( (Red - Red2)^2 + (Green - Green2)^2 + (Blue - Blube2)^2 )

Tylko chcąc to robić tą metodą musiałabyś każdy kolor z bazy porównać i wybrać obrazek z którego wyciągnęłaś najbardziej zbliżony kolor - najmniejszy dystans do podanego koloru.

Oczywiście nie jest to doskonała metoda bo ludzkie oczy nie są "matematycznie poprawne". Więcej o temacie porównywania kolorów:
http://www.compuphase.com/cmetric.htm
https://en.wikipedia.org/wiki/Color_difference