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

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

Преобразование в ч/б [D7, Win2k]


Страницы:   1 2

seregka ©   (2005-03-20 11:35:00) 

Как "очернобелить" картинку???
Спасибо


AlterEgo of WondeRu   (2005-03-20 19:13:00) [21]

Fenik   (20.03.05 19:01) [7]
Приведи верную формулу, а не кричи.


привел в 6, а я никогда ни кричу... это просто эмоции...


Fenik   (2005-03-20 19:03:00) [22]

> Anatoly Podgoretsky ©  (20.03.05 18:59) [5]
> Не то слово, там такое получится.


Да ну? ;)


Fenik   (2005-03-20 19:01:00) [23]

> seregka  (20.03.05 18:54) [3]
> а как для 32 битных делать???


Также. Только тип будет

TRGB = packed record
 B, G, R, A: Byte;
end;

> AlterEgo of WondeRu ©  (20.03.05 18:57) [4]
> формула неверна!!!!!!!


Я тебя не понимаю. В черно-белое переводит? Переводит.
Тогда в чем проблема?
Я, когда писал, не думал про науку.
Приведи верную формулу, а не кричи.


AlterEgo of WondeRu   (2005-03-20 19:00:00) [24]

пост 16

http://www.delphimaster.ru/cgi-bin/forum.pl?id=1108377216&n=7


Anatoly Podgoretsky   (2005-03-20 18:59:00) [25]

AlterEgo of WondeRu ©   (20.03.05 18:57) [4]
Не то слово, там такое получится.


AlterEgo of WondeRu   (2005-03-20 18:57:00) [26]

Fenik   (20.03.05 17:01) [1]
(Dest^.b + Dest^.g + Dest^.r) / 3


формула неверна!!!!!!!


seregka   (2005-03-20 18:54:00) [27]

а как для 32 битных делать???


Fenik   (2005-03-20 17:02:00) [28]

Как обычно забыл напомнить: только для 24-битных растров.


Fenik   (2005-03-20 17:01:00) [29]

type
 TRGB = packed record
   B, G, R: Byte;
  end;
 pRGB = ^TRGB;

functionColorToRGB(Color: TColor): TRGB;
begin
  withResult do begin
   R := Lo(Color);
   G := Lo(Color shr8);
   B := Lo((Color shr8) shr8);
  end;
end;

procedureThreshold(Bitmap: TBitmap; Value: Byte; Color1, Color2: TColor);
varx, y: Word;
   C1, C2: TRGB;
   Dest: pRGB;
begin
 C1 := ColorToRGB(Color1);
 C2 := ColorToRGB(Color2);
  fory := 0 toBitmap.Height - 1 do begin
   Dest := Bitmap.ScanLine[y];
    forx := 0 toBitmap.Width - 1 do begin
      if(Dest^.b + Dest^.g + Dest^.r) / 3 > Value
        thenDest^ := C1
        elseDest^ := C2;
     Inc(Dest);
    end;
  end;
end;

Threshold(Bmp, 127, clWhite, clBlack);


Страницы:   1 2

Наверх

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