Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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.05 c
14-1082448342
Sirus
2004-04-20 12:05
2004.05.09
Установк своей программы...


14-1082109682
Voland2000
2004-04-16 14:01
2004.05.09
Nokia 8110-forever


1-1082964495
Серж
2004-04-26 11:28
2004.05.09
CASE для Дельфи


3-1081758841
Alex2004
2004-04-12 12:34
2004.05.09
Как уменьшить размер кэша


14-1082108906
Jonny5
2004-04-16 13:48
2004.05.09
Терминал





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский