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

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

24-битный цвет в 8-битный [D6, Win2k]


Borealis ©   (2003-11-09 19:23:00) 

По какой формуле преобразуется 24-битный цвет (т.е. обычная переменная типа TColor с тремя однобайтовыми компонентами R, G и B), в 8-битный (т.е. 256-цветный)?


Mihey   (2003-11-11 00:16:00) [1]

2 крот:

Хорошо бы, если сосчитать количество всех уникальных цветов данного изображения и тогда можно точнее составить палитру для 256-цветного изображения.


крот   (2003-11-10 16:20:00) [2]

Я бы делал так:

1. Получил бы шаг для 256 цветового режима. То есть, всего цветов
в 24-битном режиме 16777215, значит для 256 цветового режима цвета будут различаться через 16777215/256 значений.

2. Далее, через цикл нашел бы соответсвующий цвет в 256 режиме

var
Color256: TColor; //искомый цвет
Step: integer; //Цветовой шаг
flag: boolean; //признак того, что цвет найден
Color: TColor; //исходный цвет в 24-битном режиме

flag := false;
while (Color256 < 256) and
(not flag)
begin
if (Color256 >= Color)
flag := true
else
Color256 := Color256 + Step;
end;

на выходе Color256 будет иметь ближайшее к исходному Color значение. По-моему так.


miek   (2003-11-09 22:23:00) [3]

По разным. Смотря какую палитру брать для 8-битного режима. Проще всего Greyscale или Uniform (можете посмотреть в Фотошопе). Или для каждой точки искать наиболее близкий цвет в палитре методом полного перебора.


Наверх

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