Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Цветовые модели и между ними [D6, WinXP]


HydraMarat ©   (2002-09-06 01:42:00) 

Здрасте! Вообщем, пытаюсь найти в net"е алгоритмы преобразования цветов между RGB,HSB,CMYK. Можно в одну через другую или хотя бы без HSB... Все, что нашел - не всегда корректно... Может что посоветуете... очень надо.

Спасибо.


Владимир Васильев   (2002-09-06 10:03:00) [1]

http://www.efg2.com/Lab/


Digitman   (2002-09-06 09:35:00) [2]

RGB -> HSV

1. Vmax = max(R, G, B)
2. Vmin = min(R, G, B)
3. dV = Vmax - Vmin
4. if V <> 0 then S = dV / Vmin else (S = 0, H = undefined)
5. if S <> 0 then
if R = V then H = (G - B) / dV
else if G = V then H = (B - R) / dV
else if B = V then H = (R - G) / dV
6. H = H * 60
7. if H < 0 then H = H + 360


RGB -> HLS

1. Vmax = max(R, G, B)
2. Vmin = min(R, G, B)
3. L = (Vmax - Vmin) / 2
4. if Vmax = Vmin then (S = 0; H = undefined, EXIT !)
5. if L <= 0.5 then (S = (Vmax - Vmin) / (Vmax + Vmin); goto 7)
6. S = (Vmax - Vmin) / (2 - Vmax - Vmin)
7. if R = Vmax then (H = (G - B) / (Vmax - Vmin); goto 10)
8. if G = Vmax then (H = (B - R) / (Vmax - Vmin) + 2; goto 10)
9. H = (R - G) / (Vmax - Vmin) + 4
10. H = H * 60
11. if H < 0 then H = H + 360


HydraMarat   (2002-09-06 09:35:00) [3]

Ну в CMY то я знаю и понимаю, а вот в CMYK, там как с черным быть?


Tihas   (2002-09-06 04:51:00) [4]

НУ RGB->CMY
вышлядит так
если выразить r,g,b,c,m,y действительными числами в интервале
от 0..1, то
c:=abs(1-r);
m:=abs(1-g);
y:abs(1-b);
точно также и в обратку.
Удачи


Наверх

Титульная страница Поиск, карта сайта Написать письмо