IPB
ЛогинПароль:

> RGB to indexed color palette, перевод из RGB в палитру 256 цветов
Билли Боб
сообщение 18.09.2011 1:11
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 47
Пол: Мужской

Репутация: -  0  +


Как подогнать три цвета в один из 256-цветной палитры?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
Lapp
сообщение 19.09.2011 3:18
Сообщение #2


Уникум
*******

Группа: Модераторы
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Цитата(-TarasBer- @ 18.09.2011 11:53) *
Протестую. Этого более чем достаточно даже в стандартной палитре. Для особо привередливых - можно применить специальные фильтры. А для статичной картинки можно и палитру подогнать.
Цитата(TarasBer @ 18.09.2011 11:58) *
Палитру можно и поменять на оптимизированную.
Тарас, я спорить не буду, поскольку все определяется конкретными целями и т.п. Скажем, если бы я сказал, что сказал выше, в аудитории полиграфщиков - они бы просто пальцем у виска покрутили: "вы слышали? этот идиот говорил про 8-битную палитру! глупец.." Да и ты сам сделал _несколько_ оговорок в своих доводах )).

Цитата
А потом для каждого пиксела смотришь ближайший к нему цвет из палитры,
Сейчас попробую конкретно объяснить..

Цитата(Билли Боб @ 18.09.2011 15:08) *
Такая палитра
Так, Билли, этта, Боб, слушай, значить, суда. (я тут запятую не пропустил?)

1. Выведи все цвета от 0 до 255 на экран (типа как ты привел выше, но чтоб ты знал ТОЧНО, где какой номер).

2. Нажми PrtSc.

3. Идешь в свой любимый редактор (я использовал MS Paint, который в Windows), начинаешь новый рисунок и вставляешь в него буфер (ctrl-V).

4. Сходи на кухню, покушай и свари себе кофе. Работа предстоит долгая и нудная.

5. Используй тул "пипетка" (dropper, color picker), ткни курсором в самый первый цвет (например, это было 123 0 234)

6. Иди в "edit colors" и прочитай там значения RGB для этого цвета.

7. Создай новый текстовый файл в блокноте (или в редакторе FAR), my_palette256.txt, и запиши туда строку:
123 0 234

8. Идешь обратно в редактор картинок, снова выбираешь пипетку и кликаешь в следующий цвет.

9. Снова идешь в color edit и выясняешь значения.

10. Записываешь следующую строку в my_palette256.txt.

11. Продолжаешь это безобразие до опупения (это значит цвет №255 на местном жаргоне)).

12. Проверяешь созданную таблицу выборочно (не менее, чем в 10 цветах).

13. Бережно сохраняешь my_palette256.txt и копируешь его на три разных носителя как минимум.

14. В своей программе предусматриваешь массив:
Palette256: array[0..255,0..2] of byte;

15. Делаешь чтение файла my_palette256.txt в массив Palette256

16. Делаешь функцию типа такой:
function BestFitColor(r,g,b: integer): byte;
var
m: integer;
begin
m:= MaxInt;
for i:=1 to 255 do begin
d:= Sqr(r - Palette256[i,0]) + Sqr(g - Palette256[i,1]) + Sqr(b - Palette256[i,2]);
if d<m then begin
BestFitColor:=i;
m:= d
end
end
end;

17. Считываешь пиксел своей картинки в переменную Color и выводишь BestFitColor(Color).

18. Важно!! Залезаешь на стол и танцуешь жигу на клаве dance.gif, потом идешь на кухню и доедаешь все, что осталось в холодильнике.

19. Если все хорошо получилось, постишь сюда файл my_palette256.txt в назидание потомкам.

Сообщение отредактировано: Lapp - 19.09.2011 11:36


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
Билли Боб   RGB to indexed color palette   18.09.2011 1:11
Lapp   256-цветных палитр есть много. Обычно, адаптеры м...   18.09.2011 4:31
Билли Боб   Палитра обычная svga256. Я хочу вывести 24-битное ...   18.09.2011 6:34
Lapp   Палитра обычная svga256. Я хочу вывести 24-битное ...   18.09.2011 7:19
-TarasBer-   > Вообще, 256 цветов (8 бит) слишком мало, чтоб...   18.09.2011 10:53
TarasBer   > Палитра обычная svga256. Я хочу вывести 24-би...   18.09.2011 10:58
Билли Боб   Такая палитра   18.09.2011 14:08
Lapp   Протестую. Этого более чем достаточно даже в станд...   19.09.2011 3:18
TarasBer   Мне кажется, это не лучший способ узнать стандартн...   19.09.2011 9:17
Lapp   Мне кажется, это не лучший способ узнать стандартн...   19.09.2011 11:35
TarasBer   > )) у всех свои способы. Можно и описанный мно...   19.09.2011 11:47
Билли Боб   Lapp, похоже ты сегодня рано встал)) но вот 16 пун...   19.09.2011 13:13
TarasBer   Нет, просто он живёт не в России. > но вот 16 ...   19.09.2011 13:21
Билли Боб   Наверное, мог. Только в этом коде надо переменны...   19.09.2011 13:54
TarasBer   Нет, тип переменных менять не надо. Надо только в ...   19.09.2011 13:56
Lapp   Да, этот момент я не учел.. написать Sqr(r - long...   20.09.2011 10:04
Билли Боб   да, вот так лучше.   19.09.2011 13:58


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 19.07.2025 4:27
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"