![]() |
![]() |
Билли Боб |
![]()
Сообщение
#1
|
Новичок ![]() Группа: Пользователи Сообщений: 47 Пол: Мужской Репутация: ![]() ![]() ![]() |
Как подогнать три цвета в один из 256-цветной палитры?
|
![]() ![]() |
Lapp |
![]()
Сообщение
#2
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
Протестую. Этого более чем достаточно даже в стандартной палитре. Для особо привередливых - можно применить специальные фильтры. А для статичной картинки можно и палитру подогнать. Палитру можно и поменять на оптимизированную. Тарас, я спорить не буду, поскольку все определяется конкретными целями и т.п. Скажем, если бы я сказал, что сказал выше, в аудитории полиграфщиков - они бы просто пальцем у виска покрутили: "вы слышали? этот идиот говорил про 8-битную палитру! глупец.." Да и ты сам сделал _несколько_ оговорок в своих доводах )).Цитата А потом для каждого пиксела смотришь ближайший к нему цвет из палитры, Сейчас попробую конкретно объяснить..Такая палитра Так, Билли, этта, Боб, слушай, значить, суда. (я тут запятую не пропустил?)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. Важно!! Залезаешь на стол и танцуешь жигу на клаве ![]() 19. Если все хорошо получилось, постишь сюда файл my_palette256.txt в назидание потомкам. Сообщение отредактировано: Lapp - -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
![]() ![]() |
![]() |
Текстовая версия | 29.04.2025 9:16 |