Программирование на Delphi и не только Как преобразовать цветное изображение в чёрно-белое? | Программирование на Delphi и не только

Delphi FAQ >> Графика

Данная функция на Delphi преобразовывает цветное изображение в черно-белое(оттенки серого):

function CreateGrayBmp (Source: TBitmap): TBitmap;
var
  Table: array[Byte] of TRGBQuad;   I: Integer;

begin

  Result := TBitmap.Create;

  with Result do


  begin     PixelFormat := pf8Bit;     Width := Source.Width;     Height := Source.Height;

    for I := Low(Table) to High(Table) do


      with Table[I] do
      begin         rgbRed := I;         rgbGreen := I;         rgbBlue := I;         rgbReserved := 0;

      end;


    if (SetDIBColorTable(Canvas.Handle, Low(Table), High(Table), Table) = 0) then       RaiseLastWin32Error;     Canvas.Draw(0, 0, Source);

  end;


end;