Przeliczenie barwy 24-bitowej palety na web-safe

0

Załóżmy, że mamy kolor 24-bitowy, np. RGB(242, 150, 47). W pewnych warunkach sprzętowo-programowych nie będzie mógł być zsyntezowany (np. na obrazie w ustalonej palecie lub archaicznej karcie graficznej/monitorze). Jak zatem ten kolor przeliczyć na najbliższy mu kolor z palety web-safe (palety 216-kolorowej)?

0

paleta web-safe to po prostu paleta składająca się z kolorów RGB = 0/33h/66h/99h/cch/ffh - wielokrotności 51 (33h) (6 kombinacji ^ 3 składowych = 216 kolorów) - wystarczy podstawić każdą składową i odjąć od każdej, potem sprawdzić do której odległość jest najmniejsza - np: |242 - 0xff| < |242 - 0xcc| (FF), |150 - 0x99| < |150 - 0xcc| (99), |47 - 0x33| < |47 - 0x00| (33), więc RGB(242, 150, 47) [#F29696] = safeRGB(255, 153, 51) [#FF9933]

ale nie wiem jaki jest na to wzór ;P
//chociaż w sumie

RGB = [(round(R % 0x33 / 0x33) + floor(R / 0x33)) * 0x33,
(round(G % 0x33 / 0x33) + floor(G / 0x33)) * 0x33,
(round(B % 0x33 / 0x33) + floor(B / 0x33)) * 0x33] :P

0

hmm to jest proste, kazdy kolor rgb to wspolrzedne punktu w szczescianie rgb tak wiec mozesz wyznaczyc odleglosc miedzy dwoma punktami jako sqrt((r - r)2 + (g - g)2 + (b - b)^2) i znajdz taka odlgelosc ktora jest najmniejsza czyli kolor jest najblizszy danemu z palety

1 użytkowników online, w tym zalogowanych: 0, gości: 1