Карта сайтаСсылкиКонтакты

Хостинг


Инвертирование изображения

PDF Печать
Статьи

Для инвертирования изображения, необходимо инвертировать значения цвета растрового изображения. Это будет делаться при помощи логической операции отрицания NOT. Сначала необходимо объявить тип:


type
   TFarbArray = array[0..0] of TRGBTriple;
   pFarbArray = ^TFarbArray;

Затем запишем процедуру инвертирования Bitmap:


procedure InvertBitmap(const Bitmap: TBitmap);
var
   i,j:Integer;
   Series: ^TRGBTriple;
begin
   for i:= 0 to Bitmap.Height-1 do
   begin
     Series:= Bitmap.ScanLine[i];
     for j:= 0 to Bitmap.Width-1 do
     begin
      Series^.rgbtRed   := not Series^.rgbtRed;
      Series^.rgbtBlue  := not Series^.rgbtBlue;
      Series^.rgbtGreen := not Series^.rgbtGreen;
      inc(Series);
     end;
   end;
   Bitmap.Assign(Bitmap);
end;

Первый цикл проходит через каждый пиксел по высоте, а второй – каждый пиксел по ширине растрового изображения. Затем каждый пиксел инвертируется при помощи оператора NOT.

Вызов этой процедуры очень прост:


procedure TForm1.Button1Click(Sender: TObject);
begin
   InvertBitmap(Image1.Picture.Bitmap);
end;

 

Добавить комментарий


Защитный код
Обновить