图象的亮度问题? (20分)

D

dreamya

Unregistered / Unconfirmed
GUEST, unregistred user!
我要对一个图象进行灰度的控制,应该怎么办?谢谢?灰度能分成多少层次
 
procedure TMainForm.GraychangeClick(Sender: TObject);
var
p: pRGBTripleArray;
x, y, ScanlineBytes: Integer;
Bmp: TBitmap;
Gray: integer;
// e1, e2, e3: integer;

begin
Bmp := TBitmap.Create;
Bmp.Assign(Image1.Picture.Bitmap);
p := Bmp.scanline[0]; //这里是scanline的优化算法 ,scanline只需执行2次
ScanlineBytes := Integer(bmp.Scanline[1]) - Integer(p);
///////ScanlineBytes是一个负值
starttime := gettickcount;
for y := 0 to Bmp.Height - 1 do
begin
for x := 0 to Bmp.Width - 1 do
begin
Gray := Round(p[x].rgbtRed * 0.3 + p[x].rgbtGreen * 0.59
+ p[x].rgbtBlue * 0.11);
p[x].rgbtRed := byte(Gray);
p[x].rgbtGreen := byte(Gray);
p[x].rgbtBlue := byte(Gray);
end;
INC(Integer(p), ScanlineBytes); //其实是减小操作
end;
Image1.Picture.Bitmap.Assign(Bmp);
jp1.Assign(bmp);
Bmp.Free;


end;
 
顶部