![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Преобразование в ч/б [D7, Win2k]
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);