unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, Menus, ExtDlgs,
ComCtrls, ExtCtrls, LCLIntf;
type
{ TForm1 }
TForm1 = class(TForm)
Image1: TImage;
MainMenu1: TMainMenu;
MenuFile: TMenuItem;
MenuAdjustments: TMenuItem;
MenuExit: TMenuItem;
MenuAbout: TMenuItem;
N1: TMenuItem;
MenuSave: TMenuItem;
MenuNew: TMenuItem;
MenuOpen: TMenuItem;
MenuBlur: TMenuItem;
MenuEffects: TMenuItem;
MenuDrawing: TMenuItem;
OpenPictureDialog1: TOpenPictureDialog;
ProgressBar1: TProgressBar;
SavePictureDialog1: TSavePictureDialog;
ToolBar1: TToolBar;
procedure MenuBlurClick(Sender: TObject);
procedure MenuExitClick(Sender: TObject);
procedure MenuOpenClick(Sender: TObject);
private
public
end;
var
Form1: TForm1;
implementation
{$R *.lfm}
{ TForm1 }
procedure TForm1.MenuOpenClick(Sender: TObject);
begin
if OpenPictureDialog1.Execute then
begin
Image1.Picture.LoadFromFile(OpenPictureDialog1.FileName);
end;
end;
procedure TForm1.MenuExitClick(Sender: TObject);
begin
Close;
end;
procedure TForm1.MenuBlurClick(Sender: TObject);
var i,j: word;
origBitmap: TBitmap;
resultBitmap: TBitmap;
rgbColor: longint;
red, green, blue: byte;
red1, green1, blue1: byte;
red2, green2, blue2: byte;
red3, green3, blue3: byte;
red4, green4, blue4: byte;
avgRed, avgGreen, avgBlue: byte;
begin
resultBitmap := TBitmap.Create;
resultBitmap.Width := Image1.Picture.Width;
resultBitmap.Height := Image1.Picture.Height;
origBitmap := TBitmap.Create;
origBitmap.Assign(Image1.Picture.Graphic);
ProgressBar1.Min:=1;
ProgressBar1.Max:=Image1.Picture.Width-2;
for i := 1 to Image1.Picture.Width-2 do
for j := 1 to Image1.Picture.Height-2 do
begin
rgbColor := ColorToRGB(origBitmap.Canvas.Pixels[i,j]);
blue := GetBValue(rgbColor);
green := GetGValue(rgbColor);
red := GetRValue(rgbColor);
rgbColor := ColorToRGB(origBitmap.Canvas.Pixels[i - 1, j]);
blue1 := GetBValue(rgbColor);
green1 := GetGValue(rgbColor);
red1 := GetRValue(rgbColor);
rgbColor := ColorToRGB(origBitmap.Canvas.Pixels[i, j - 1]);
blue2 := GetBValue(rgbColor);
green2 := GetGValue(rgbColor);
red2 := GetRValue(rgbColor);
rgbColor := ColorToRGB(origBitmap.Canvas.Pixels[i, j + 1]);
blue3 := GetBValue(rgbColor);
green3 := GetGValue(rgbColor);
red3 := GetRValue(rgbColor);
rgbColor := ColorToRGB(origBitmap.Canvas.Pixels[i + 1, j]);
blue4 := GetBValue(rgbColor);
green4 := GetGValue(rgbColor);
red4 := GetRValue(rgbColor);
avgRed := (red1+red2+red3+red4) div 4;
avgGreen := (green1+green2+green3+green4) div 4;
avgBlue := (blue1+blue2+blue3+blue4) div 4;
rgbColor := ((red+avgRed) div 2) + (((green+avgGreen) div 2)*256) + (((blue+avgBlue) div 2)*65536);
resultBitmap.Canvas.Pixels[i, j] := rgbColor;
ProgressBar1.Position:=i;
Application.ProcessMessages;
end;
Image1.Picture.Bitmap := resultBitmap;
end;
end.