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

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

мне привести 24-битное изображение к 8-битному... [D6, D7, Win2k, WinXP]


Ale}{(is) ©   (2004-07-17 20:33:00) 

Уважаемые Мастера! подскажите пожалуйста ответ на такой вопрос. Есть сгенерированная по алгоритму octree палитра. Как мне привести 24-битное изображение к 8-битному, используя эту палитру, возможно с использованием dithering’а (как это делает ACDSee FotoEditor). Смотрел по ссылке http://www.efg2.com/Lab/Library/Color/AndComputers.htm#Quantization, но там столько всего, что я запутался. Подскажите, пожалуйста, алгоритм или дайте ссылочку.


Огромное Кулясищще   (2004-07-25 17:47:00) [1]

2 Ale}{(is) (18.07.04 21:48) [3]:

Что ж такое говоришь? Ты сам пишешь:

> Есть сгенерированная по алгоритму octree палитра.

Как же ты её сгенерировал?


Ertong   (2004-07-25 08:42:00) [2]

Поройся в исходниках бесплатного компонента GifImage. Там реализовано много методов dithering'а.


Ale}{(is)   (2004-07-18 21:48:00) [3]

Правильно, хранится в PLogPalette. Однако, если у тебя палитра в 16 цветов (а не в 256), то простым подбором цветов не обойтись. Нужен алгоритм dithering'а. Знаю, что их множество, но все на сишке. На Дэльфи ничего не нашёл. Нужна просто ссылка. Словестные описания - это хорошо, но лучше не изобретать велосипед, а воспользоваться чем нибудь проверенным...


Огромное Кулясищще   (2004-07-17 23:35:00) [4]

> А почему бы тебе не изменить с помощь TBitMap

Без потерь это пройдёт от меньшего к большему.

> Есть сгенерированная по алгоритму octree палитра. Как мне привести 24-битное изображение к 8-битному, используя эту палитру

Гм, какие сложности? Палитра была сгенерирована с изображения. Очевидно, держится в PLogPalette. Дальше, наверное, лучше завести отдельное изображение pf8bit и простым проходом выбираешь ближайший из палитры цвет для данного. Тут простой алгоритм подойдёт какой-нить (можно доступ к RGB составляющим, а далее берёшь R за основу и складываешь модкули разности между R и G, и R и B. Чем меньше число - те мближе цвет) или может GetNearestColor умеет корректировать себя по палитре. В общем, всё ништяк.


oleg_SYS   (2004-07-17 21:18:00) [5]

А почему бы тебе не изменить с помощь TBitMap

var
bm: TBitMap;
begin
bm.LoadFromFile('какринка.bmp');
bm.PixelFormat:=pf8bit;
bm.SaveToFile('какринка.bmp');


Наверх

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