Форум: "Media";
Текущий архив: 2004.04.11;
Скачать: [xml.tar.bz2];
ВнизКОЛИЧЕСТВО Цветов Найти похожие ветки
← →
Urvin © (2004-02-04 17:10) [0]Каксделать уменьшения количествацветов в заданном рисунке. Как в Фотошопе ф-ция "Reduce Colors" - юзер вводит количество цветов, прога делает нужный рисунок.
← →
Urvin © (2004-02-04 17:10) [0]Каксделать уменьшения количествацветов в заданном рисунке. Как в Фотошопе ф-ция "Reduce Colors" - юзер вводит количество цветов, прога делает нужный рисунок.
← →
Urvin © (2004-02-05 15:13) [1]И это мастера!?
← →
Urvin © (2004-02-05 15:13) [1]И это мастера!?
← →
Fenik © (2004-02-05 17:22) [2]Это вот это? -
type
TRGB = packed record
B, G, R: Byte;
end;
pRGB = ^TRGB;
procedure Posterize(Bitmap: TBitmap; Amount: Integer);
var x, y: Integer;
Dest: pRGB;
begin
for y := 0 to Bitmap.Height - 1 do begin
Dest := Bitmap.ScanLine[y];
for x := 0 to Bitmap.Width - 1 do begin
with Dest^ do begin
B := BLimit(Round(B/Amount)*Amount);
G := BLimit(Round(G/Amount)*Amount);
R := BLimit(Round(R/Amount)*Amount);
end;
Inc(Dest);
end;
end;
end;
← →
Fenik © (2004-02-05 17:22) [2]Это вот это? -
type
TRGB = packed record
B, G, R: Byte;
end;
pRGB = ^TRGB;
procedure Posterize(Bitmap: TBitmap; Amount: Integer);
var x, y: Integer;
Dest: pRGB;
begin
for y := 0 to Bitmap.Height - 1 do begin
Dest := Bitmap.ScanLine[y];
for x := 0 to Bitmap.Width - 1 do begin
with Dest^ do begin
B := BLimit(Round(B/Amount)*Amount);
G := BLimit(Round(G/Amount)*Amount);
R := BLimit(Round(R/Amount)*Amount);
end;
Inc(Dest);
end;
end;
end;
← →
Fenik © (2004-02-05 17:23) [3]Не забудь
Bitmap.PixelFormat := pf24Bit;
← →
Fenik © (2004-02-05 17:23) [3]Не забудь
Bitmap.PixelFormat := pf24Bit;
← →
Urvin © (2004-02-11 22:00) [4]А что такое BLimit?
← →
Urvin © (2004-02-11 22:00) [4]А что такое BLimit?
← →
Sapersky © (2004-02-12 11:23) [5]Возможно, это:
function BLimit(Value : DWord): Byte;
begin
If Value>255 then Result:=255 else Result:=Value;
end;
хотя с т.з. производительности вызов ф-ии по 3 раза на пиксель, наверное, не есть хорошо. Лучше вписать непосредственно в Posterize.
← →
Sapersky © (2004-02-12 11:23) [5]Возможно, это:
function BLimit(Value : DWord): Byte;
begin
If Value>255 then Result:=255 else Result:=Value;
end;
хотя с т.з. производительности вызов ф-ии по 3 раза на пиксель, наверное, не есть хорошо. Лучше вписать непосредственно в Posterize.
← →
Fenik © (2004-02-14 10:42) [6]Sapersky © (12.02.04 11:23) [5]
Дадад. Все верно. Почти.
function BLimit(A: Integer): Byte;
begin
if A < 0 then Result := 0
else if A > 255 then Result := 255
else Result := A;
end;
← →
Fenik © (2004-02-14 10:42) [6]Sapersky © (12.02.04 11:23) [5]
Дадад. Все верно. Почти.
function BLimit(A: Integer): Byte;
begin
if A < 0 then Result := 0
else if A > 255 then Result := 255
else Result := A;
end;
← →
Urvin © (2004-02-14 15:34) [7]Ну, что-то похожее, но не то. Тут получатся слишком произвольные цвета, и если установить слишком малое число цветов, картинку уже можно не узнать. Фотошоп же и при пяти цветах позволяет разглядеть картинку.
← →
Urvin © (2004-02-14 15:34) [7]Ну, что-то похожее, но не то. Тут получатся слишком произвольные цвета, и если установить слишком малое число цветов, картинку уже можно не узнать. Фотошоп же и при пяти цветах позволяет разглядеть картинку.
← →
Fenik © (2004-02-14 15:43) [8]Мое предположение. Фотошоп считывает все имеющиеся уникальные цвета в массив. Далее находит наиболее близкие по яркости (к примеру) и объединяет их в один средний, попутно заменяя пиксели, которым принадлежали те цвета. И так, пока число уникальных цветов не приблизится к требуемому.
В принципе это не сложно. Сложнее добиться оптимального алгоритма.
Желаю удачи.
← →
Fenik © (2004-02-14 15:43) [8]Мое предположение. Фотошоп считывает все имеющиеся уникальные цвета в массив. Далее находит наиболее близкие по яркости (к примеру) и объединяет их в один средний, попутно заменяя пиксели, которым принадлежали те цвета. И так, пока число уникальных цветов не приблизится к требуемому.
В принципе это не сложно. Сложнее добиться оптимального алгоритма.
Желаю удачи.
← →
Urvin © (2004-02-14 16:56) [9]Скорее всего так... Только мне кажется, что это все долго, и я уже пробовал так сделать - геморройно и пускай, у меня три коричневых и итдин синий цвет. Значит, я дожен коричневые объединить, а синий оставить... Как-то это все недоступно...
Может есть какой-нибудь алгоритм, если у меня N цветов в палитре (порядка 400) пользователь может ввести число M (не более 200). Прога все рано приводит картинку к палитре, может, туда надо че вставить?
← →
Urvin © (2004-02-14 16:56) [9]Скорее всего так... Только мне кажется, что это все долго, и я уже пробовал так сделать - геморройно и пускай, у меня три коричневых и итдин синий цвет. Значит, я дожен коричневые объединить, а синий оставить... Как-то это все недоступно...
Может есть какой-нибудь алгоритм, если у меня N цветов в палитре (порядка 400) пользователь может ввести число M (не более 200). Прога все рано приводит картинку к палитре, может, туда надо че вставить?
← →
Fenik © (2004-02-14 17:12) [10]>Прога все рано приводит картинку к палитре
Так у тебя что ли 256-цветное изображение? Палитра только у него. А если больше цветов, то палитры нет. Ты случайно не про "Сохранить для Web..." говоришь?
← →
Fenik © (2004-02-14 17:12) [10]>Прога все рано приводит картинку к палитре
Так у тебя что ли 256-цветное изображение? Палитра только у него. А если больше цветов, то палитры нет. Ты случайно не про "Сохранить для Web..." говоришь?
← →
Urvin © (2004-02-14 20:52) [11]Я знаю, о чем говорю... У меня есть массив цветов (400 штук разных цветов), и картинку я привожу к этим цветам. Вот. Но иногда хотелось бы, чтобы юзер выставлял кол-во цветов...
← →
Urvin © (2004-02-14 20:52) [11]Я знаю, о чем говорю... У меня есть массив цветов (400 штук разных цветов), и картинку я привожу к этим цветам. Вот. Но иногда хотелось бы, чтобы юзер выставлял кол-во цветов...
← →
Fenik © (2004-02-14 20:58) [12]И для 400 цветов медленно работает?
Не верю. Покажи как делал.
← →
Fenik © (2004-02-14 20:58) [12]И для 400 цветов медленно работает?
Не верю. Покажи как делал.
← →
Fenik © (2004-02-14 21:02) [13]>Urvin © (14.02.04 16:56) [9]
>Как-то это все недоступно...
Неправда. Всё доступно.
Если у меня будет сегодня желание, попробую сделать.
← →
Fenik © (2004-02-14 21:02) [13]>Urvin © (14.02.04 16:56) [9]
>Как-то это все недоступно...
Неправда. Всё доступно.
Если у меня будет сегодня желание, попробую сделать.
← →
Urvin © (2004-02-14 21:16) [14]Да, помоему у меня что-то с мозгами. Алгоритм кривой очень, хотя правильный местами...
← →
Urvin © (2004-02-14 21:16) [14]Да, помоему у меня что-то с мозгами. Алгоритм кривой очень, хотя правильный местами...
Страницы: 1 вся ветка
Форум: "Media";
Текущий архив: 2004.04.11;
Скачать: [xml.tar.bz2];
Память: 0.51 MB
Время: 0.038 c