Bitmap - converter para tons cinza

Top  Previous  Next

Note: não é possivel passar um TObject como parametro

ou seja não funciona com Image1.Picture.Bitmap...

Deve criar um TBitmap e usar assign antes...

 

procedure ConverterTonsCinza(var Bitmap: TBitmap);

var

  P      : ^TRGBTriple;

  C, X, Y: Integer;

begin

  Bitmap.PixelFormat := pf24Bit;

  for y := 0 to Bitmap.Height-1 do

  begin

    P := Bitmap.ScanLine[y];

    for x := 0 to Bitmap.Width-1 do

    begin

      C := Round((0.30 * P.rgbtRed) + (0.59 * P.rgbtGreen) + (0.11 * P.rgbtBlue));

      P.rgbtRed   := C;

      P.rgbtGreen := C;

      P.rgbtBlue  := C;

      Inc(p);

    end;

  end;

end;