PENDAHULUAN PROGRAM SELENGKAPNYA ADALAH SEBAGAI BERIKUT:

memo1.Clear; for j:=0 to gambar.Height-1 do begin temp:=gambar.ScanLine[j]; i:=0; repeat writeF,inttostrtemp[i]+ ; i:=i+1; until i =3gambar.Width-1; end; closeFileF; memo1.Lines.LoadFromFileAgungFile; image1.Picture.Bitmap:=gambar;end; 10. Kemudian dengan cara yang sama pilih menu file, Menampilkan Nilai Intensitas Pixel Hasil, lalu ketik program berikut. procedure TFormHistogramCut.MenampilkanNilaiIntensitasPixelHasil1Click Sender: TObject; var F2 : TextFile; AgungFile2: String; temp : PByteArray; i,j : integer; gambar2 :TBitmap; begin AgungFile2:=nilai intensitas pixel hasil.txt; AssignFileF2,AgungFile2; gambar2:=TBitmap.Create; gambar2:=image2.Picture.Bitmap; rewriteF2; writelnF2,Matrik dirancang oleh Agung BALI; memo2.Clear; for j:=0 to gambar2.Height-1 do begin temp:=gambar2.ScanLine[j]; i:=0; repeat writeF2,inttostrtemp[i]+ ; i:=i+1; until i =3gambar2.Width-1; end; closeFileF2; memo2.Lines.LoadFromFileAgungFile2; image2.Picture.Bitmap:=gambar2; end; 11. Simpan program dengan cara save all. 12. Compile program dengan cara project compiler. 13. Jalankan program dengan cara Run. 14. Lihat hasilnya seperti berikut. Gambar 14.14 Hasil Program Menampilkan Nialai Intensitas Pixel

14.3 PROGRAM SELENGKAPNYA ADALAH SEBAGAI BERIKUT:

unit UnitHistogramCut; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtDlgs, StdCtrls, ExtCtrls, ComCtrls, Menus; type TFormHistogramCut = classTForm Image1: TImage; Image2: TImage; btOpen: TButton; OpenPictureDialog1: TOpenPictureDialog; btHistogramCut: TButton; ProgressBar1: TProgressBar; btExit: TButton; EditHistogramCut: TEdit; Label1: TLabel; MainMenu1: TMainMenu; File1: TMenuItem; MenampilkanNilaiIntensitasPixelAwal1: TMenuItem; MenampilkanNilaiIntensitasPixelHasil1: TMenuItem; Memo1: TMemo; Memo2: TMemo; procedure btOpenClickSender: TObject; procedure btHistogramCutClickSender: TObject; procedure btExitClickSender: TObject; procedure MenampilkanNilaiIntensitasPixelAwal1ClickSender: TObject; procedure MenampilkanNilaiIntensitasPixelHasil1ClickSender: TObject; private { Private declarations } public { Public declarations } end; var FormHistogramCut: TFormHistogramCut; FileNameImg: string; implementation {R .dfm} uses UnitImageProses; procedure TFormHistogramCut.btOpenClickSender: TObject; begin if OpenPictureDialog1.Execute then begin FileNameImg := OpenPictureDialog1.FileName; Caption := Histogram Cut : + OpenPictureDialog1.FileName; Image1.Picture.LoadFromFile OpenPictureDialog1.FileName; Image2.Visible := False; end; end; procedure TFormHistogramCut.btHistogramCutClickSender: TObject; var thres:real; n:integer; begin Image2.Visible := True; Image2.Picture.Graphic := Image1.Picture.Graphic; n:= StrToIntDefEditHistogramCut.Text,5; ImgHistogramCut Image2, n, ProgressBar1; end; procedure TFormHistogramCut.btExitClickSender: TObject; begin FormHistogramCut.Close; end; procedure TFormHistogramCut.MenampilkanNilaiIntensitasPixelAwal1Click Sender: TObject; var F : TextFile; AgungFile: String; temp : PByteArray; i,j : integer; gambar :TBitmap; begin AgungFile:=nilai intensitas pixel awal.txt; AssignFileF,AgungFile; gambar:=TBitmap.Create; gambar:=image1.Picture.Bitmap; rewriteF; writelnF,Matrik dirancang oleh Agung Gunawan; memo1.Clear; for j:=0 to gambar.Height-1 do begin temp:=gambar.ScanLine[j]; i:=0; repeat writeF,inttostrtemp[i]+ ; i:=i+1; until i =3gambar.Width-1; end; closeFileF; memo1.Lines.LoadFromFileAgungFile; image1.Picture.Bitmap:=gambar; end; procedure TFormHistogramCut.MenampilkanNilaiIntensitasPixelHasil1Click Sender: TObject; var F2 : TextFile; AgungFile2: String; temp : PByteArray; i,j : integer; gambar2 :TBitmap; begin AgungFile2:=nilai intensitas pixel hasil.txt; AssignFileF2,AgungFile2; gambar2:=TBitmap.Create; gambar2:=image2.Picture.Bitmap; rewriteF2; writelnF2,Matrik dirancang oleh Agung BALI; memo2.Clear; for j:=0 to gambar2.Height-1 do begin temp:=gambar2.ScanLine[j]; i:=0; repeat writeF2,inttostrtemp[i]+ ; i:=i+1; until i =3gambar2.Width-1; end; closeFileF2; memo2.Lines.LoadFromFileAgungFile2; image2.Picture.Bitmap:=gambar2; end; end. unit UnitImageProses; interface uses WINPROCS, Graphics, ExtCtrls, ComCtrls, Variants; type TFreqHist = array [0..255] of longint; TMatrixFilter = array [1..16,1..16] of real; function RgbToGray Clr:TColor : byte; function ImgGetGray var Image:TImage; x,y:integer : byte; procedure ImgConvertToGrayscale var Image1:TImage; var ProgressBar1: TProgressBar; procedure ImgHistogramCut var Image:TImage; nRepeat:integer; var ProgressBar1: TProgressBar; implementation const PercentR = 0.299; PercentG = 0.587; PercentB = 0.114; function ByteRange r:double : byte; begin if r0 then ByteRange:=0 else if r255 then ByteRange:=255 else ByteRange:=Roundr; end; function RgbToGray Clr:TColor : byte; var r,g,b:byte; begin r := GetRValueClr; g := GetGValueClr; b := GetBValueClr; RgbToGray := ByteRange rPercentR + gPercentG + bPercentB; end; function ImgGetGray var Image:TImage; x,y:integer : byte; begin Result := RgbToGray Image.Canvas.Pixels[x,y]; end; procedure ImgConvertToGrayscale var Image1:TImage; var ProgressBar1: TProgressBar; var x,y:integer; ClrGray:byte; begin ProgressBar1.Max := Image1.Width-1; ProgressBar1.Position := 0; for x:=0 to Image1.Width-1 do begin for y:=0 to Image1.Height-1 do begin ClrGray := ImgGetGray Image1,x,y; Image1.Canvas.Pixels[x,y] := RGB ClrGray,ClrGray,ClrGray; end; Image1.Repaint; ProgressBar1.Position := x; end; end; procedure ImgHistogramCut var Image:TImage; nRepeat:integer; var ProgressBar1: TProgressBar; const BLACK_THRES=2; var x,y,i,counter:integer; clrGray,clrGrayMax:byte; Freq: TFreqHist; TotFreq, ImgSize: longint; thres: real; begin ProgressBar1.Max := Image.Width-1; ProgressBar1.Position := 0; for counter:=1 to nRepeat do begin for i:=0 to 255 do Freq[i]:=0; ImgSize := 0; clrGrayMax := 0; for x:=0 to Image.Width-1 do for y:=0 to Image.Height-1 do begin clrGray := ImgGetGray Image,x,y; Inc Freq[ClrGray]; if clrGrayBLACK_THRES then begin IncImgSize; if clrGrayclrGrayMax then clrGrayMax := clrGray; end; end; { tentukan threshold } TotFreq := 0; thres := 255; for i:=255 downto 0 do begin Inc TotFreq, Freq[i]; if TotFreqImgSize2 then begin thres := i; break; end; end; { tuliskan pixel baru } ProgressBar1.Position := 0; for x:=0 to Image.Width-1 do begin for y:=0 to Image.Height-1 do begin ClrGray := ImgGetGray Image,x,y; if clrGraythres then Image.Canvas.Pixels[x,y] := RGB 0,0,0 else begin clrGray := ByteRange clrGrayclrGrayMax255; Image.Canvas.Pixels[x,y] := RGB clrGray,clrGray,clrGray; end; end; ProgressBar1.Position := x; end; end; Image.Repaint; end; end.

BAB 15 LOG IN

15.1 PENDAHULUAN

Untuk membuat program aplikasi sebaiknya menggunakan Log In. Tujuanya adalah program aplikasi tersebut hanya bisa dipakai oleh operator tertentu.

15.2 CARA MEMBUAT PROGRAM LOG IN ADALAH SEBAGAI BERIKUT.

1. Buka program delphi, dengan cara pilih menu start, program borland delphi 7, delphi 7.

Gambar 15.1 Start Program

2. Kemudian pilih menu file, new, application.

Gambar 15.2 New Application 3. Pada object inspector, ubah properti captionnya dengan nama Log In, dan namenya dengan nama FormLogIn. Gambar 15.3 Form LogIn 4. Tambahkan label 1 pada form ubah properti captionnya dengan nama User Name, tambahkan label 2 pada form ubah properti captionnya dengan nama Pasword, tambahkan edit 1 pada form, kemudian hapus teksnya pada property Teks, tambahkan edit 2 pada form, kemudian hapus teksnya pada property Teks, dan pada properties PasswordCharnya ganti dengan bintang . Gambar 15.4 Tambah Edit ke Form 5. Tambahkan button 1 pada form kemudian ubah captionya dengan nama Log In dan berinama Namenya dengan nama btLogIn, Tambahkan button 2 pada form kemudian ubah captionya dengan nama Exit dan berinama Namenya dengan nama btExit. Gambar 15.5 Tambah Button ke Form

6. Tambahkan form lagi dengan cara klik menu file new form.

Gambar 15.6 New Form

7. Ubah captionya dengan nama Aplikasi dan namenya dengan nama FormAplikasi.

Gambar 15.7 Form Aplikasi

8. Simpan filenya dengan cara file save all.

Gambar 15.8 Menu Save All 9. Berinama unit1 dengan nama UnitLogIn dan unit2nya dengan nama UnitAplikasi dan projectnya dengan nama ProjectLogIn. Gambar 15.9 Save UnitLogIn 10. Pilih form Aplikasi kemudian Klik menu file kemudian Use Unit Alt + F11. Gambar 15.10 Use Unit

11. Tekan Ok. Pada form aplikasi use unitnya adalah UnitLogIn.

Gambar 15.11 Mengelingkan Form Aplikasi Dengan UnitLogIn 12. Pilih form Log In, kemudian klik menu file, Use Unit Alt + F11 lalu tekan ok, pada form Log In use unitnya adalah Unit Aplikasi. Gambar 15.12 Mengelingkan UnitLogIn Dengan Form Aplikasi 13. Pilih form Log In, lalu doble klik button Log In, kemudian ketik program berikut: procedure TFormLogIn.btLogInClickSender: TObject; begin if Edit1.Text=username and Edit2.Text=pasword then begin MessageBox0,Log In Sukses,information,MB_OK+MB_ICONINFORMATION; FormLogIn.Hide; FormAplikasi.Show; end else MessageBox0,Log In Gagal,error,MB_OK+MB_ICONERROR; end; 14. Doble klik button Exit lalu ketik program berikut: procedure TFormLogIn.btExitClickSender: TObject; begin FormLogIn.Close; end; 15. Simpan programnya dengan cara save all.

16. Kemudian compile program dengan cara pilih menu project, compile

projectLogIn. Gambar 15.13 Compiler ProjectLogIn

17. Jalankan program dengan cara pilih menu Run, run atau tekan tanda panah

hijau. Gambar 15.14 Menu Run

18. Lalu masukan tulisan username dan password, Hasilnya adalah sebagai

berikut: