Ilmu adalah hal yang terpenting dalam hidup, carilah ilmu dan amalkan ilmu yang kau dapat...

BRIGHTNESS DENGAN DELPHI

Untuk merubah suatu kecerahan pada gambar kiat membutuh suatu operasi pada Delphi, yaitu dengan menggunakan tiga ScrollBar (TScrollBar), yang setiap ScrollBar nya digunakan untuk mengatur kecerahan pada setiap elemen warna. Cara membuat :
1. Siapkan program diatas / sebelumnya (program Delphi histogram pada bahasan
    sebelumnya).
2. Buat Form baru.
3. Ubah nama Form tersebut dengan nama BrightnessForm.
4. Buat prosedur di bawah ini deng events OnClose.
    procedure TBrightnessForm.FormClose(Sender: TObject;
    var Action:TCloseAction);
    begin
    Action:=caFree;
    end;

5. Buat 3 label beri masing-masing dengan caption Merah, Biru, Hijau.
6. Tambahkan tiga komponen scroll bar dan beri nama Nama untuk RedScrollBar,
    GreenScrollBar, dan BlueScrollBar. Letakan di samping label.
7. Tambahkan 2 tombol Caption Ok dan cancel/batal. Dan simapan dengan nama
    Brightness.




8. Masuk pada pengkodingan BrightnessForm (tekan F12). Tambahkan prosedur ExtCtrlspada uses. Sehingga menjadi :
     uses
     ExtCtrls, Windows, Messages, SysUtils, Variants, Classes, Graphics,
     Controls, Forms,Dialogs, StdCtrls


9. Tulis prosedur SetBrightness di bagian implementation
    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;
        ShowMessage('Dilarang 2 Pemrosesan');
      end;
      end;
     end;

10. Isikan prosedur di bawah pada komponen RedScrollBar
      procedure TBrightnessForm.RedScrollBarChange(Sender: TObject);
     var
       a,b:Integer;
       temp:integer;
       pixelPointer:PByteArray;
       originalPixelPointer:PByteArray;
     begin
       try
         begin
           if TemporaryImage.Picture.Bitmap.PixelFormat=pf24bit then
           for a:=0 to TemporaryImage.Picture.Height-1 do
           begin
              pixelPointer:=TemporaryImage.Picture.Bitmap.ScanLine[a];
             originalPixelPointer:=OriginalImage.Picture.Bitmap.ScanLine[a];
             for b:=0 to TemporaryImage.Picture.Width-1 do
             begin
               temp:=originalPixelPointer[3*b+2]+ RedScrollBar.Position;
               if temp<0 then temp:=0;
               if temp>255 then temp:=255;
               pixelPointer[3*b+2]:=temp;
             end;
           end;
           if TemporaryImage.Picture.Bitmap.PixelFormat=pf8bit then
           for a:=0 to TemporaryImage.Picture.Height-1 do
           begin
             pixelPointer:=TemporaryImage.Picture.Bitmap.ScanLine[a];
             originalPixelPointer:=OriginalImage.Picture.Bitmap.ScanLine[a];
             for b:=0 to TemporaryImage.Picture.Width-1 do
             begin
               temp:=originalPixelPointer[b]+ RedScrollBar.Position;
               if temp<0 then temp:=0;
               if temp>255 then temp:=255;
               pixelPointer[b]:=temp;
               BlueScrollBar.Position:=RedScrollBar.Position;
               GreenScrollBar.Position:=RedScrollBar.Position;
             end;
           end;
           TemporaryImage.Refresh;
         end;
       except
          begin
           Free;
           ShowMessage('Dilarang 2 Pemrosesan');
         end;
       end;
      end; 


11. Isikan prosedur di bawah pada komponen BlueScrollBar

procedure TBrightnessForm.BlueScrollBarChange(Sender: TObject);
var
  a,b:Integer;
  temp:integer;
  pixelPointer:PByteArray;
  originalPixelPointer:PByteArray;
begin
  try
    begin
      if TemporaryImage.Picture.Bitmap.PixelFormat=pf24bit then
      for a:=0 to TemporaryImage.Picture.Height-1 do
      begin
        pixelPointer:=TemporaryImage.Picture.Bitmap.ScanLine[a];
        originalPixelPointer:=OriginalImage.Picture.Bitmap.ScanLine[a];
        for b:=0 to TemporaryImage.Picture.Width-1 do
        begin
          temp:=originalPixelPointer[3*b]+ BlueScrollBar.Position;
          if temp<0 then temp:=0;
          if temp>255 then temp:=255;
          pixelPointer[3*b]:=temp;
        end;
      end;
      if TemporaryImage.Picture.Bitmap.PixelFormat=pf8bit then
      for a:=0 to TemporaryImage.Picture.Height-1 do
      begin
        pixelPointer:=TemporaryImage.Picture.Bitmap.ScanLine[a];
        originalPixelPointer:=OriginalImage.Picture.Bitmap.ScanLine[a];
        for b:=0 to TemporaryImage.Picture.Width-1 do
        begin
          temp:=originalPixelPointer[b]+ BlueScrollBar.Position;
          if temp<0 then temp:=0;
          if temp>255 then temp:=255;
          pixelPointer[b]:=temp;
          RedScrollBar.Position:=BlueScrollBar.Position;
          GreenScrollBar.Position:=BlueScrollBar.Position;
        end;
      end;
      TemporaryImage.Refresh;
    end;
  except
    begin
      Free;
      ShowMessage('Dilarang 2 Pemrosesan');
    end;
  end;
end;
12. Isikan prosedur di bawah pada komponen GreenScrollBar
procedure TBrightnessForm.GreenScrollBarChange(Sender: TObject);
var
  a,b:Integer;
  temp:integer;
  pixelPointer:PByteArray;
  originalPixelPointer:PByteArray;
begin
  try
    begin
      if TemporaryImage.Picture.Bitmap.PixelFormat=pf24bit then
      for a:=0 to TemporaryImage.Picture.Height-1 do
      begin
        pixelPointer:=TemporaryImage.Picture.Bitmap.ScanLine[a];
        originalPixelPointer:=OriginalImage.Picture.Bitmap.ScanLine[a];
        for b:=0 to TemporaryImage.Picture.Width-1 do
        begin
          temp:=originalPixelPointer[3*b+1]+ GreenScrollBar.Position;
          if temp<0 then temp:=0;
          if temp>255 then temp:=255;
          pixelPointer[3*b+1]:=temp;
        end;
      end;
      if TemporaryImage.Picture.Bitmap.PixelFormat=pf8bit then
      for a:=0 to TemporaryImage.Picture.Height-1 do
      begin
        pixelPointer:=TemporaryImage.Picture.Bitmap.ScanLine[a];
        originalPixelPointer:=OriginalImage.Picture.Bitmap.ScanLine[a];
        for b:=0 to TemporaryImage.Picture.Width-1 do
        begin
          temp:=originalPixelPointer[b]+ GreenScrollBar.Position;
          if temp<0 then temp:=0;
          if temp>255 then temp:=255;
          pixelPointer[b]:=temp;
          RedScrollBar.Position:=GreenScrollBar.Position;
          BlueScrollBar.Position:=GreenScrollBar.Position;
        end;
      end;
      TemporaryImage.refresh;
    end;
  except
    begin
      Free;
      ShowMessage('Dilarang 2 Pemrosesan');
    end;
  end;
end;
13. Isi komponen Button Ok, dengan menggunakan prosedur :
begin
  Applied:=true;
  Close();
end;
14. Isi komponen Button Cancel, dengan menggunakan prosedur :

procedure TBrightnessForm.CancelButtonClick(Sender: TObject);
begin
  Applied:=false;
  Close;
                end; 15. Isikan prosedur pada Events Onclose, dengan prosedur :
procedure TBrightnessForm.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  if Applied=false then
  TemporaryImage.Picture.Bitmap.Assign(
    OriginalImage.Picture.Bitmap);
  Action:=caFree;
end;
16. Buka form MainForm (tekan Shift+F12), tambahkan Brightness pada MainMenu1        di dalam Edit Image. Dan isikan prosedur
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('Gambar Belum Terbuka');
    end;
  end;
end;


HASIL PROGRAM DI ATAS



1 komentar:

Posting Komentar