coding untuk brightness dengan menggunakan delphi dan ini masih berkaitan dengan yang kemarin dalam histogram....
unit BrightnessUnit;
interface
uses
ExtCtrls, Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TBrightnessForm = class(TForm)
RedScrollBar: TScrollBar;
GreenScrollBar: TScrollBar;
BlueScrollBar: TScrollBar;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
OKButton: TButton;
CancelButton: TButton;
procedure RedScrollBarChange(Sender: TObject);
procedure GreenScrollBarChange(Sender: TObject);
procedure BlueScrollBarChange(Sender: TObject);
procedure OKButtonClick(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure CancelButtonClick(Sender: TObject);
private
{ Private declarations }
TemporaryImage:TImage;
OriginalImage:TImage;
Applied:boolean;
public
{ Public declarations }
procedure SetBrightness(Image: TImage);
end;
var
BrightnessForm: TBrightnessForm;
implementation
{$R *.dfm}
procedure TBrightnessForm.SetBrightness(Image: TImage);
begin
try
begin
TemporaryImage:=Image;
OriginalImage:=TImage.Create(self);
OriginalImage.Picture.Bitmap.Assign(Image.Picture.Bitmap);
end;
except
begin
Free; //free the brightness form
ShowMessage('Cannot complete the operation');
end;
end;
end;
procedure TBrightnessForm.RedScrollBarChange(Sender: TObject);
var
i,j:Integer;
temp:integer;
pixelPointer:PByteArray;
originalPixelPointer:PByteArray;
begin
try
begin
for i:=0 to TemporaryImage.Height-1 do
begin
pixelPointer:=TemporaryImage.Picture.Bitmap.ScanLine[i];
originalPixelPointer:=OriginalImage.Picture.Bitmap.ScanLine[i];
for j:=0 to TemporaryImage.Width-1 do
begin
temp:=originalPixelPointer[3*j+2]+ RedScrollBar.Position;
if temp<0 then temp:=0;
if temp>255 then temp:=255;
pixelPointer[3*j+2]:=temp;
end;
end;
TemporaryImage.Refresh;
end;
except
begin
Free;
ShowMessage('Cannot complete the operation');
end;
end;
end;
procedure TBrightnessForm.GreenScrollBarChange(Sender: TObject);
var
i,j:Integer;
temp:integer;
pixelPointer:PByteArray;
originalPixelPointer:PByteArray;
begin
try
begin
for i:=0 to TemporaryImage.Height-1 do
begin
pixelPointer:=TemporaryImage.Picture.Bitmap.ScanLine[i];
originalPixelPointer:=OriginalImage.Picture.Bitmap.ScanLine[i];
for j:=0 to TemporaryImage.Width-1 do
begin
temp:=originalPixelPointer[3*j+1]+ GreenScrollBar.Position;
if temp<0 then temp:=0;
if temp>255 then temp:=255;
pixelPointer[3*j+1]:=temp;
end;
end;
TemporaryImage.Refresh;
end;
except
begin
Free;
ShowMessage('Cannot complete the operation');
end;
end;
end;
procedure TBrightnessForm.BlueScrollBarChange(Sender: TObject);
var
i,j:Integer;
temp:integer;
pixelPointer:PByteArray;
originalPixelPointer:PByteArray;
begin
try
begin
for i:=0 to TemporaryImage.Height-1 do
begin
pixelPointer:=TemporaryImage.Picture.Bitmap.ScanLine[i];
originalPixelPointer:=OriginalImage.Picture.Bitmap.ScanLine[i];
for j:=0 to TemporaryImage.Width-1 do
begin
temp:=originalPixelPointer[3*j]+ BlueScrollBar.Position;
if temp<0 then temp:=0;
if temp>255 then temp:=255;
pixelPointer[3*j]:=temp;
end;
end;
TemporaryImage.Refresh;
end;
except
begin
Free;
ShowMessage('Cannot complete the operation');
end;
end;
end;
procedure TBrightnessForm.OKButtonClick(Sender: TObject);
begin
Applied:=true;
Close();
end;
procedure TBrightnessForm.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
if Applied=false then
TemporaryImage.Picture.Bitmap.Assign(
OriginalImage.Picture.Bitmap);
Action:=caFree;
end;
procedure TBrightnessForm.CancelButtonClick(Sender: TObject);
begin
Applied:=false;
Close;
end;
end.
unit MainUnit;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, ExtDlgs, Menus;
type
TMainForm = class(TForm)
MainMenu1: TMainMenu;
File1: TMenuItem;
Open1: TMenuItem;
Save1: TMenuItem;
CLose1: TMenuItem;
Exit1: TMenuItem;
OpenPictureDialog1: TOpenPictureDialog;
SavePictureDialog1: TSavePictureDialog;
StatusBar1: TStatusBar;
Image1: TMenuItem;
Histogram1: TMenuItem;
Brightness1: TMenuItem;
procedure Open1Click(Sender: TObject);
procedure Save1Click(Sender: TObject);
procedure Histogram1Click(Sender: TObject);
procedure CLose1Click(Sender: TObject);
procedure Exit1Click(Sender: TObject);
procedure Brightness1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
MainForm: TMainForm;
implementation
uses ImageUnit, ActiveX, HistogramUnit, BrightnessUnit;
{$R *.dfm}
procedure TMainForm.Open1Click(Sender: TObject);
var
formatInfo:string;
begin
if OpenPictureDialog1.Execute then
begin
Application.CreateForm(TImageForm, ImageForm);
ImageForm.Image1.Picture.LoadFromFile(
OpenPictureDialog1.FileName);
ImageForm.ClientHeight:=
ImageForm.Image1.Picture.Height;
ImageForm.ClientWidth:=
ImageForm.Image1.Picture.Width;
case (ImageForm.Image1.Picture.Bitmap.PixelFormat) of
pf1bit : formatInfo:='Binary';
pf8bit : formatInfo:='Gray scale';
pf24bit: formatInfo:='True color';
end;
StatusBar1.SimpleText:= OpenPictureDialog1.FileName +' '+
IntToStr(ImageForm.Image1.Picture.Width) + 'x'+
IntToStr(ImageForm.Image1.Picture.Height) + ' '+
formatInfo;
end;
end;
procedure TMainForm.Save1Click(Sender: TObject);
begin
try
begin
if SavePictureDialog1.Execute then
TImageForm(ActiveMDIChild).Image1.Picture.SaveToFile(
SavePictureDialog1.FileName);
end
except
ShowMessage('Cannot complete the operation');
end;
end;
procedure TMainForm.Histogram1Click(Sender: TObject);
begin
if ImageForm<>nil then
begin
ImageForm:=TImageForm(ActiveMDIChild);
try
begin
Application.CreateForm(THistogramForm,HistogramForm);
HistogramForm.ShowHistogram(ImageForm.Image1);
end;
except
HistogramForm.Free;
ShowMessage('Cannot complete the operation');
end;
end;
end;
procedure TMainForm.CLose1Click(Sender: TObject);
begin
try
ActiveMDIChild.Close;
except
ShowMessage('Cannot complete the operation');
end;
end;
procedure TMainForm.Exit1Click(Sender: TObject);
begin
Close;
end;
procedure TMainForm.Brightness1Click(Sender: TObject);
begin
if ImageForm<>nil then
begin
ImageForm:=TImageForm(ActiveMDIChild);
try
begin
Application.CreateForm(TBrightnessForm,BrightnessForm);
Brightnessform.SetBrightness(ImageForm.Image1);
end;
except
BrightnessForm.Free;
ShowMessage('Cannot complete the operation');
end;
end;
end;
initialization
OleInitialize(nil);
finalization
OleUninitialize
end.
untuk hasilnya.....dari coding diatas....
Langganan:
Posting Komentar (Atom)



0 komentar:
Posting Komentar