• Tidak ada hasil yang ditemukan

BAB VI. KESIMPULAN DAN SARAN

6.2. Saran

6.2.Saran

Untuk kepentingan pengembangan serta pemanfaatan lebih lanjut terhadap program Penambahan Frame dan Background pada sebuah foto, maka penulis menyarankan beberapa hal sebagai berikut:

1. Masukan untuk proram ini tidak hanya file dengan ekstensi .bmp saja namun file dengan tipe lain, seperti file .jpg, .tiff, .gif, dll.

2. Adanya penambahan fungsi agar ukuran frame dapat mengikuti ukuran frame

sehingga system tidak perlu membatasi ukuran file masukan user. 3. Program dapat ditambah dengan fasilitas perbaikan kualitas citra.

4. Program dapat ditambah dengan fasilitas pengubahan warna yang lain, misalnya Sephia.

5. Program dapat menyimpan citra dengan format black-white dalam ukuran file 1 bit.

6. Program dapat ditambah dengan fasilitas tambahan seperti fasilitas untuk menambah tulisan dan gambar animasi.

7. Program dapat ditambah dengan fasilitas mencetak hasil.

Yogyakarta.

Anonim, Image Processing, http://www.webopedia.com/TERM/ I /

image_processing.html; 20 Oktober 2006

Anonim, Image Processing, http://www.cc.gatech.edu/~sooraj/7495/ image_processing /; 23 Oktober 2006

Anonim, Pengolahan Citra, http://id.wikipedia.org/wiki/Pengolahan_citra diakses tanggal 15 September 2006

Divisi Penelitian dan Penembangan MADCOMS, 2003, Pemrograman Borland Object Delphi 7, ANDI, Madiun.

Ladjamuddin, Al-Bahra, 2006, Rekayasa Perangkat Lunak, Graha Ilmu, Yogyakarta.

Michael , S.Lew, 2001, Principles of Visual Information Retrieval, Springer, London.

Munir, Rinaldi, 2004, Pengolahan Citra Digital Dengan Pendekatan Algoritmik, Informatika, Bandung.

Nawawi, H., 1998, Metode Penelitian Bidang Sosial, 31, 117, 141, Gajah Mada University Press, Yogyakarta.

Prosise, Jeff, 1994, How Computer Graphic Work, Ziff Davis Press, Emeryville Callifornia.

Sudargo, Paulus, 2004, Pemrograman Berorientasi Object Menggunakan Delphi ANDI, Yogyakarta.

Foto

Frame

Background

Foto

Frame

Background

Foto

Frame

Background

Foto

Frame

Background

ƒ Prosesor :

ƒ RAM :

Kuesioner Tugas Akhir “Penambahan Frame dan Background pada Citra Foto” (PFBPCF)

Cara pengisian :

Berilah jawaban dari setiap pertanyaan dengan memberikan sebuah tanda silang (x) pada huruf yang mewakili jawaban Anda.

1. PFBPCF dilihat dari segi tampilan menu, tampilan utama, tampilan pengolahan frame, tampilan color, tampilan info, dan tampilan help?

a. Tidak menarik b. Kurang menarik c. Cukup menarik

d. Menarik

e. Sangat menarik

2. PFBPCF dilihat dari segi kemudahan pemakaian? a. Sangat sulit

b. Sulit c. Cukup sulit

d. Mudah

e. Sangat Mudah

3. PFBPCF dilihat dari fasilitas yang disediakan? a. Tidak lengkap

b. Kurang lengkap c. Cukup lengkap

d. Lengkap e. Sangat lengkap

4. PFBPCF dilihat dari segi efisiensi waktu yang diperlukan untuk menggabungkan sebuah foto, frame, dan background?

a. Tidak efisien b. Kurang efisien c. Cukup efisien

d. Efisien e. Sangat efisien

c. Cukup memuaskan

6. PFBPCF ketika dijalankan pada komputer yang Anda miliki? a. Sangat lambat

b. Lambat c. Cukup lambat

d. Cepat e. Sangat cepat

7. PFBPCF dilihat secara keseluruhan? a. Tidak bermanfaat b. Kurang bermanfaat c. Cukup bermanfaat d. Bermanfaat e. Sangat bermanfaat Saran:

Pertanyaan

No Nama Nama Stodio

1 2 3 4 5 6 7

1 Agus Artha Foto E E C E C C

2 Ana Swagaya D D D C D D D

3 - Spectra E E C E E D D

4 Randy Juliet Digital Foto D D E E E D D

5 Popo Assno Phone D E C D C D D

6 - Digibox C C B B C B C

7 - Central Foto C D C C C - D

8 Atik Duta Foto D D C C D - C

9 Triyani Duta Foto C D C D C D C

10 Onta Malibu 62 Stodio D D C C D D D

11 Agus P. Malibu 62 Stodio D D D C D D D

12 Berty Malibu 62 Stodio C D C D C D C

13 Nai Fresco D D C E D D D

14 Doni Foto Talk D E C D D D D

1 Eunike E E C D D D E 2 Abigail D D C E D D D 3 Yohana Octaviani D E D E D E D 4 Renny Y.S. D D C C D D D 5 Novie D D C C E D E 6 Chika C D C B C D E 7 Mellissa Catalina D D D C C C D 8 Lanny Setyawati D D C C C E D 9 Indah D D C C D D D 10 Dian C D C C D D D 11 Natalia D D B C C D D 12 Selvi Indrayani C D C E D D B 13 Laura D D C C C D C 14 Agung C E C D E D D 15 Hengki D D D E D D D

1. PFBPCF dilihat dari segi tampilan menu, tampilan utama, tampilan pengolahan frame, tampilan color, tampilan info, dan tampilan help?

a. Tidak menarik 00,00 %

b. Kurang menarik 00,00 %

c. Cukup menarik 33,33 %

d. Menarik 53,33 %

e. Sangat menarik 13,33 %

2. PFBPCF dilihat dari segi kemudahan pemakaian?

a. Sangat sulit 00,00 %

b. Sulit 00,00 %

c. Cukup sulit 6,67 %

d. Mudah 66,67 %

e. Sangat Mudah 26,67 %

3. PFBPCF dilihat dari fasilitas yang disediakan?

a. Tidak lengkap 00,00 %

b. Kurang lengkap 6,67 %

c. Cukup lengkap 66,67 %

d. Lengkap 20,00 %

e. Sangat lengkap 6,37 %

4. PFBPCF dilihat dari segi efisiensi waktu yang diperlukan untuk menggabungkan sebuah foto, frame, dan background?

a. Tidak efisien 00,00 %

b. Kurang efisien 6,67 %

c. Cukup efisien 33,33 %

d. Efisien 33,33 %

c. Cukup memuaskan 40,00 %

d. Memuaskan 46,67 %

e. Sangat memuaskan 13,33 %

6. PFBPCF ketika dijalankan pada komputer yang Anda miliki?

a. Sangat lambat 00,00 % b. Lambat 6,67 % c. Cukup lambat 00,00 % d. Cepat 73,33 % e. Sangat cepat 00,00 % Tidak menjawab 20,00 %

7. PFBPCF dilihat secara keseluruhan?

a. Tidak bermanfaat 00,00 %

b. Kurang bermanfaat 00,00 %

c. Cukup bermanfaat 33,33 %

d. Bermanfaat 66,67 %

a. PFBPCF dilihat dari segi tampilan menu, tampilan utama, tampilan pengolahan frame, tampilan color, tampilan info, dan tampilan help?

a. Tidak menarik 00,00 %

b. Kurang menarik 00,00 %

c. Cukup menarik 26.67 %

d. Menarik 66.67 %

e. Sangat menarik 6.67 %

b. PFBPCF dilihat dari segi kemudahan pemakaian? a. Sangat sulit 00,00 %

b. Sulit 00,00 %

c. Cukup sulit 00,00 %

d. Mudah 80,00 %

e. Sangat Mudah 20,00 %

c. PFBPCF dilihat dari fasilitas yang disediakan? a. Tidak lengkap 00,00 %

b. Kurang lengkap 6,67 %

c. Cukup lengkap 73,33 %

d. Lengkap 20,00 %

e. Sangat lengkap 00,00 %

d. PFBPCF dilihat dari segi efisiensi waktu yang diperlukan untuk menggabungkan sebuah foto, frame, dan background?

a. Tidak efisien 00,00 %

b. Kurang efisien 6,67 %

c. Cukup efisien 53,33 %

d. Efisien 13,33 %

5. PFBPCF dilihat dari segi hasil yang diperloleh dari proses penggabungan foto, frame, dan background? a. Tidak memuaskan 00,00 % b. Kurang memuaskan 00,00 % c. Cukup memuaskan 33.33 % d. Memuaskan 53.33 % e. Sangat memuaskan 13,33 %

6. PFBPCF ketika dijalankan pada komputer yang Anda miliki? a. Sangat lambat 00,00 %

b. Lambat 00,00 %

c. Cukup lambat 6,67 %

d. Cepat 80,00 %

e. Sangat cepat 13,33 %

7. PFBPCF dilihat secara keseluruhan?

a. Tidak bermanfaat 00,00 %

b. Kurang bermanfaat 6,67 %

c. Cukup bermanfaat 6,67 %

d. Bermanfaat 66,67 %

FORM MENU

unit Unit 1_m enu; int erface

uses

Windows, Messages, Sy sUt ils, Var iant s, Classes, Graphics, Cont rols, Form s,

Dialogs, Ext Ct rls, Com Ct r ls, j peg, St dCt r ls; t ype

Tm enu_form = class( TFor m ) I m age1: TI m age;

St at usBar1: TSt at usBar; Tim er1: TTim er ; I m age5: TI m age; Label1: TLabel; Label2: TLabel; Label3: TLabel;

procedure I m age2Click( Sender: TObj ect ) ;

procedure I m age3Click( Sender: TObj ect ) ;

procedure I m age4Click( Sender: TObj ect ) ;

procedure Tim er1Tim er ( Sender: TObj ect ) ;

procedure I m age2MouseMove( Sender : TObj ect ; Shift : TShift St at e; X,

Y: I nt eger) ;

procedure I m age1MouseMove( Sender : TObj ect ; Shift : TShift St at e; X,

Y: I nt eger) ;

procedure I m age3MouseMove( Sender : TObj ect ; Shift : TShift St at e; X,

Y: I nt eger) ;

procedure I m age4MouseMove( Sender : TObj ect ; Shift : TShift St at e; X,

Y: I nt eger) ;

procedure Label2Click( Sender: TObj ect ) ; procedure Label1Click( Sender: TObj ect ) ; procedure Label3Click( Sender: TObj ect ) ; procedure Label1MouseMove( Sender : TObj ect ; Shift : TShift St at e; X,

Y: I nt eger) ;

procedure Label2MouseMove( Sender : TObj ect ; Shift : TShift St at e; X,

Y: I nt eger) ;

procedure Label3MouseMove( Sender : TObj ect ; Shift : TShift St at e; X,

Y: I nt eger) ; privat e

{ Privat e declarat ions } public

{ Public declarat ions } end;

var

m enu_form : Tm enu_form ; im plem ent at ion

uses Unit 2_ut am a, Unit 7_info, Unit 3_fram e, Unit 5_color;

{ $R * .dfm } procedur e

Tm enu_form .I m age2Click( Sender: TObj ect ) ; / / klik m asuk

begin

ut am a.I m age10.Pict ure: = nil; ut am a.I m age11.Pict ure: = nil; ut am a.I m age12.Pict ure: = nil; ut am a.I m age13.Pict ure: = nil; ut am a.show ;

m enu_form .hide; end;

procedur e

Tm enu_form .I m age3Click( Sender: TObj ect ) ; / / klik info

begin info.show; m enu_form .hide; end;

procedur e

Tm enu_form .I m age4Click( Sender: TObj ect ) ; / / klik keluar

begin

if MessageDlg ( 'Apakah Anda Yakin Mau Mengak iri Program I ni?',

m t Warning, [ m bOK] , 0) = idok t hen Close;

end; procedur e

Tm enu_form .Tim er1Tim er ( Sender: TObj ect ) ;

begin

st at usbar1.Panels[ 2] .Tex t : = t im et ost r( t im e) ; end;

procedur e

Tm enu_form .I m age2MouseMove( Sender : TObj ect ; Shift : TShift St at e;

X, Y: I nt eger) ; begin

St at usBar1.Panels[ 0] .Text : = 'Masuk ke m enu ut am a';

procedur e

Tm enu_form .I m age3MouseMove( Sender : TObj ect ; Shift : TShift St at e;

X, Y: I nt eger) ; begin

St at usBar1.Panels[ 0] .Text : = 'Masuk ke info';

end; procedur e

Tm enu_form .I m age4MouseMove( Sender : TObj ect ; Shift : TShift St at e;

X, Y: I nt eger) ; begin

St at usBar1.Panels[ 0] .Text : = 'Keluaarrr...'; end;

procedur e Tm enu_form .Label2Click ( Sender : TObj ect ) ;

begin info.show; m enu_form .hide; end;

procedur e Tm enu_form .Label1Click ( Sender : TObj ect ) ;

begin

ut am a.I m age10.Pict ure: = nil; / / fot o ut am a.I m age11.Pict ure: = nil; / / fram e ut am a.I m age12.Pict ure: = nil; / / background

ut am a.I m age13.Pict ure: = nil; / / hasil Fram e.I m age2.Pict ure: = nil; / / fram e + fot o

Fram e.I m age3.Pict ure: = nil; / / fram e + fot o

Color_form .I m age2.Pict ure: = nil; / / hasil fot o

Color_form .I m age3.Pict ure: = nil; / / hasil fot o war na

ut am a.show ; m enu_form .hide; end;

procedur e Tm enu_form .Label3Click ( Sender : TObj ect ) ;

begin

if MessageDlg ( 'Apakah Anda Yakin Mau Mengak iri Program I ni?',

m t Warning, [ m bOK] , 0) = idok t hen Close;

end; procedur e

Tm enu_form .Label1MouseMove( Sender : TObj ect ; Shift : TShift St at e;

X, Y: I nt eger) ; begin

X, Y: I nt eger) ; begin

St at usBar1.Panels[ 0] .Text : = 'Masuk ke info';

end; procedur e

Tm enu_form .Label3MouseMove( Sender : TObj ect ; Shift : TShift St at e;

X, Y: I nt eger) ; begin

St at usBar1.Panels[ 0] .Text : = 'Keluaarrr...'; end;

end.

FORM TAMPILAN UTAMA

unit Unit 2_ut am a; int erface

uses

Windows, Messages, Sy sUt ils, Var iant s, Classes, Graphics, Cont rols, Form s,

Dialogs, Ext Ct rls, j peg, Com Ct rls, Ex t Dlgs, St dCt r ls;

t ype

Tut am a = class( TFor m ) I m age1: TI m age; St at usBar1: TSt at usBar; I m age10: TI m age; I m age11: TI m age; I m age12: TI m age; I m age13: TI m age;

OpenPict ureDialog1: TOpenPict ureDialog; OpenPict ureDialog2: TOpenPict ureDialog; SavePict ur eDialog1: TSavePict ureDialog; Print Dialog1: TPrint Dialog;

Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; Label5: TLabel; Label7: TLabel; Label8: TLabel; I m age2: TI m age; I m age3: TI m age;

procedure Label4Click( Sender: TObj ect ) ; procedure Label1Click( Sender: TObj ect ) ; procedure Label2Click( Sender: TObj ect ) ; procedure Label5Click( Sender: TObj ect ) ; procedure Label6Click( Sender: TObj ect ) ; procedure Label7Click( Sender: TObj ect ) ; procedure Label8Click( Sender: TObj ect ) ; procedure Label3Click( Sender: TObj ect ) ;

ut am a: Tut am a; gam bar: TBit m ap; im plem ent at ion

uses Unit 1_m enu, Unit 3_fram e, Unit 5_color , Unit 6_help;

{ $R * .dfm }

procedur e Tut am a.Label4Click ( Sender: TObj ect ) ; / / klik color

begin

color_form .I m age2.Pict ur e: = I m age13.Pict ur e;

color_form .I m age3.Pict ur e: = I m age13.Pict ur e;

color_form .show; end;

procedur e Tut am a.Label1Click ( Sender: TObj ect ) ; / / klik open fot o

var

form at _cit ra: st ring;

i, j , am bang, keabuan : int eger; PC, PC2, PC3, PH, PH2 : PBy t eArray; begin

if ( OpenPict ureDialog1.Execut e) t hen begin

gam bar: = TBit m ap.Creat e;

gam bar.LoadFr om File( OpenPict ur eDialog1.Fi leNam e) ;

if ( gam bar.Widt h > 801) OR ( gam bar.Height > 601) t hen begin

m essageDlg( 'Ukuran fot o m elebihi 800x600 pixel',m t error,[ m bOk] ,0) ; exit ;

end

Else if ( gam bar.Widt h < 639) OR ( gam bar.Height < 479) t hen begin

m essageDlg( 'Ukuran fot o kurang dari 640x480 pixel',m t error,[ m bOk] ,0) ; exit ;

end Else begin

im age10.Pict ure.Bit m ap: = gam bar; if ( ( im age11.Pict ure.Graphic = nil) and ( im age12.Pict ure.Graphic = nil) ) t hen

im age10.Pict ur e.Bit m ap: = gam bar; I m age2.Pict ur e: = I m age11.Pict ur e; I m age13.Pict ur e: = nil; / / hasil digant i dulu

if ( I m age11.Pict ure.Bit m ap.PixelFor m at = pf24bit ) t hen

begin

am bang: = 128; / / m enegaskan pengam bangan unt uk fram e

for i: = 0 t o I m age11.Pict ure.Height - 1 do

begin PC2 : =

I m age11.Pict ure.Bit Map.ScanLine[ i] ; / / gam bar fram e

for j : = 0 t o I m age11.Pict ur e.Widt h- 1 do

begin

keabuan: = round( ( PC2[ 3* j ] + PC2[ 3* j + 1] + P C2[ 3* j + 2] ) / 3) ;

I F( keabuan< am bang) t hen begin PC2[ 3* j ] : = 0 ; PC2[ 3* j + 1] : = 0; PC2[ 3* j + 2] : = 0; end else begin PC2[ 3* j ] : = 255; PC2[ 3* j + 1] : = 255; PC2[ 3* j + 2] : = 255; end; end; / / for j end; / / for i

for i: = 0 t o I m age10.Pict ure.Height - 1 do

begin PC : =

I m age10.Pict ure.Bit Map.ScanLine[ i] ; / / fot o

PH : =

I m age11.Pict ure.Bit Map.ScanLine[ i] ; / / fram e

PH2 : =

I m age2.Pict ure.Bit Map.ScanLine[ i] ; / / gabungan fot o + fram e

for j : = 0 t o I m age10.Pict ur e.Widt h- 1 do

begin

I F( PH[ 3* j ] = 255) and( PH[ 3* j + 1] = 255) and( P H[ 3* j + 2] = 255) t hen

/ / j ika pixel ber warna put ih begin

PH2[ 3* j ] : = ( PH2[ 3* j ] ) ; PH2[ 3* j + 1] : = ( PH2[ 3* j + 1] ) ;

PH2[ 3* j + 1] ) ; PH2[ 3* j + 2] : = ( PC[ 3* j + 2] or PH2[ 3* j + 2] ) ; end ; end; / / for j end; / / for i

im age13.Pict ur e: = im age2.Pict ure; im age2.Enabled: = false;

im age3.Enabled: = false; end

else if ( ( im age11.Pict ure.Gr aphic < > nil) and ( im age12.Pict ur e.Graphic < > nil) ) t hen begin

if ( I m age11.Pict ure.Bit m ap.PixelFor m at = pf24bit ) / / j ika form at fram e 24 bit t hen

begin

am bang: = 128; / / m enegaskan pengam bangan unt uk fram e

for i: = 0 t o

I m age11.Pict ure.Height - 1 do begin

PC2 : =

I m age11.Pict ure.Bit Map.ScanLine[ i] ; / / gam bar fram e

for j : = 0 t o I m age11.Pict ure.Widt h- 1 do begin keabuan: = round( ( PC2[ 3* j ] + PC2[ 3* j + 1] + P C2[ 3* j + 2] ) / 3) ;

I F( keabuan< am bang) t hen begin PC2[ 3* j ] : = 0 ; PC2[ 3* j + 1] : = 0; PC2[ 3* j + 2] : = 0; end else begin PC2[ 3* j ] : = 255; PC2[ 3* j + 1] : = 255; PC2[ 3* j + 2] : = 255; end ; end; / / for j end; / / for i im age11.Repaint ; for i: = 0 t o

ut am a.I m age10.Pict ure.Height - 1 do begin

PC : =

I m age10.Pict ure.Bit Map.ScanLine[ i] ; / / gam bar fot o

PC2 : =

I m age11.Pict ure.Bit Map.ScanLine[ i] ; / / gam bar fram e

I F( PC2[ 3* j ] = 255) and( PC2[ 3* j + 1] = 255) and ( PC2[ 3* j + 2] = 255) t hen / / j ika pixel berwarna put ih begin PC3[ 3* j ] : = ( PC2[ 3* j ] ) ; PC3[ 3* j + 1] : = ( PC2[ 3* j + 1] ) ; PC3[ 3* j + 2] : = ( PC2[ 3* j + 2] ) ; end else begin PC3[ 3* j ] : = ( PC[ 3* j ] or PC2[ 3* j ] ) ; PC3[ 3* j + 1] : = ( PC[ 3* j + 1] or PC2[ 3* j + 1] ) ; PC3[ 3* j + 2] : = ( PC[ 3* j + 2] or PC2[ 3* j + 2] ) ; end ; end; / / for j end; / / for i end; / / if bit 24 im age13.Repaint ;

im age10.Pict ure.Bit m ap: = gam bar; I m age3.Pict ure: = I m age13.Pict ure; I m age13.Pict ure: = nil; / / hasil digant i dulu

for i: = 0 t o I m age10.Pict ure.Height - 1 do begin

PC : =

I m age12.Pict ure.Bit Map.ScanLine[ i] ; / / background

PH : =

I m age3.Pict ure.Bit Map.ScanLine[ i] ; / / penam pung gabungan fot o + fram e PH2 : =

I m age2.Pict ure.Bit Map.ScanLine[ i] ; / / gabungan fot o + fram e

for j : = 0 t o I m age10.Pict ure.Widt h- 1 do begin I F( PH2[ 3* j ] = 255) and( PH2[ 3* j + 1] = 255) and ( PH2[ 3* j + 2] = 255) t hen begin PH[ 3* j ] : = ( PC[ 3* j ] and PH2[ 3* j ] ) ; PH[ 3* j + 1] : = ( PC[ 3* j + 1] and PH2[ 3* j + 1] ) ; PH[ 3* j + 2] : = ( PC[ 3* j + 2] and PH2[ 3* j + 2] ) ; end else begin PH[ 3* j ] : = ( PH2[ 3* j ] ) ; PH[ 3* j + 1] : = ( PH2[ 3* j + 1] ) ; PH[ 3* j + 2] : = ( PH2[ 3* j + 2] ) ; end ; end; / / for j end; / / for i

' background : '

+ I nt ToSt r( I m age12.Pict ure.Widt h) + ' x ' +

I nt ToSt r( I m age12.Pict ure.Height ) + ' pixel ';

end end; end; case

( I m age10.Pict ure.Bit m ap.Pix elForm at ) of pf1bit : form at _cit ra : = 'biner'; pf8bit : form at _cit ra : = 'keabuan'; pf24bit : form at _cit ra : = 't rue color'; end;

St at usBar1.Panels[ 0] .Text : = ' fot o : ' + I nt ToSt r( I m age10.Pict ure.Widt h)

+ ' x ' +

I nt ToSt r( I m age10.Pict ure.Height ) + ' pixel -- > '

+ form at _cit ra ;

St at usBar1.Panels[ 3] .Text : = ' hasil : ' + I nt ToSt r( I m age13.Pict ure.Widt h)

+ ' x ' +

I nt ToSt r( I m age10.Pict ure.Height ) + ' pixel ';

end; end;

procedur e Tut am a.Label2Click ( Sender: TObj ect ) ; / / klik fram e

var

i, j : int eger ;

PC, PH, PH2 : PByt eArray; begin

if ( im age10.Pict ure.Graphic= nil) t hen begin

ShowMessage( 'Masukkan fot o t er lebih dahulu') ; exit ; end else begin

Fram e.I m age2.Pict ure: = ut am a.I m age10.Pic t ure; / / for m = fot o

fram e.show; close;

I F( I m age12.Pict ur e.Graphic < > nil) t hen

begin

for i: = 0 t o

I m age10.Pict ure.Height - 1 do begin

I m age2.Pict ure.Bit Map.ScanLine[ i] ; / / gabungan fot o + fram e

for j : = 0 t o I m age10.Pict ure.Widt h- 1 do begin I F( PH2[ 3* j ] = 255) and( PH2[ 3* j + 1] = 255) and ( PH2[ 3* j + 2] = 255) t hen begin PH[ 3* j ] : = ( PC[ 3* j ] and PH2[ 3* j ] ) ; PH[ 3* j + 1] : = ( PC[ 3* j + 1] and PH2[ 3* j + 1] ) ; PH[ 3* j + 2] : = ( PC[ 3* j + 2] and PH2[ 3* j + 2] ) ; end else begin PH[ 3* j ] : = ( PH2[ 3* j ] ) ; PH[ 3* j + 1] : = ( PH2[ 3* j + 1] ) ; PH[ 3* j + 2] : = ( PH2[ 3* j + 2] ) ; end ; end; / / for j end; / / for i im age13.Repaint ; / / gabungan fot o + fram e + background - > hasil 2 end;

end; end;

procedur e Tut am a.Label5Click ( Sender: TObj ect ) ;

begin

if ( SavePict ureDialog1.Execut e) t hen

I m age13.Pict ure.SaveToFile( SavePict ureDial og1.FileNam e) ;

Applicat ion.Messagebox ( 'I m age successfully

saved','I nform at ion! ',MB_OK+ MB_I CONI NF ORMATI ON) ;

end;

procedur e Tut am a.Label6Click ( Sender: TObj ect ) ;

begin

Print Dialog1.Execut e; end;

procedur e Tut am a.Label7Click ( Sender: TObj ect ) ;

begin help.show ; end;

procedur e Tut am a.Label8Click ( Sender: TObj ect ) ;

var

i, j , am bang, keabuan : int eger; PC, PC2, PC3, PH, PH2: PBy t eArray;

begin

if ( ( I m age10.Pict ur e.Graphic = nil) and ( I m age11.Pict ure.Graphic = nil) ) t hen begin

ShowMessage( 'Masukk an fot o dan fram e dulu') ;

exit ; end

else if ( ( I m age10.Pict ure.Gr aphic < > nil) and ( I m age11.Pict ur e.Graphic = nil) ) t hen begin

ShowMessage( 'Masukk an fram e dulu') ;

exit ; end;

OpenPict ureDialog1.I nit ialDir: = 'c: \ m y pict ure';

if OpenPict ur eDialog2.Execut e t hen begin

im age12.Pict ur e.LoadFrom File( OpenPict ureD ialog2.FileNam e) ;

end;

if ( I m age11.Pict ure.Bit m ap.PixelForm at = pf24bit ) / / j ika form at fram e 24 bit t hen

begin

am bang: = 128; / / m enegaskan pengam bangan unt uk fram e

for i: = 0 t o I m age11.Pict ure.Height - 1 do begin

PC2 : =

I m age11.Pict ure.Bit Map.ScanLine[ i] ; / / gam bar fram e

for j : = 0 t o I m age11.Pict ur e.Widt h- 1 do

begin

keabuan: = round( ( PC2[ 3* j ] + PC2[ 3* j + 1] + P C2[ 3* j + 2] ) / 3) ;

I F( keabuan< am bang) t hen begin PC2[ 3* j ] : = 0 ; PC2[ 3* j + 1] : = 0; PC2[ 3* j + 2] : = 0; end else begin PC2[ 3* j ] : = 255; PC2[ 3* j + 1] : = 255; PC2[ 3* j + 2] : = 255; end ; PC : =

I m age10.Pict ure.Bit Map.ScanLine[ i] ; / / gam bar fot o

PC2 : =

I m age11.Pict ure.Bit Map.ScanLine[ i] ; / / gam bar fram e

PC3 : =

I m age11.Pict ure.Bit Map.ScanLine[ i] ; / / gam bar hasil

for j : = 0 t o I m age10.Pict ur e.Widt h- 1 do

begin

I F( PC2[ 3* j ] = 255) and( PC2[ 3* j + 1] = 255) and ( PC2[ 3* j + 2] = 255) t hen / / j ika pixel berwarna put ih begin PC3[ 3* j ] : = ( PC2[ 3* j ] ) ; PC3[ 3* j + 1] : = ( PC2[ 3* j + 1] ) ; PC3[ 3* j + 2] : = ( PC2[ 3* j + 2] ) ; end else begin PC3[ 3* j ] : = ( PC[ 3* j ] or PC2[ 3* j ] ) ; PC3[ 3* j + 1] : = ( PC[ 3* j + 1] or PC2[ 3* j + 1] ) ; PC3[ 3* j + 2] : = ( PC[ 3* j + 2] or PC2[ 3* j + 2] ) ; end ; end; / / for j end; / / for i end; / / if bit 24 im age13.Repaint ;

im age10.Pict ure.Bit m ap: = gam bar; I m age3.Pict ure: = I m age13.Pict ure; I m age13.Pict ure: = nil; / / hasil digant i dulu

for i: = 0 t o I m age10.Pict ure.Height - 1 do begin

PC : =

I m age12.Pict ure.Bit Map.ScanLine[ i] ; / / background

PH : =

I m age3.Pict ure.Bit Map.ScanLine[ i] ; / / penam pung gabungan fot o + fram e PH2 : =

I m age2.Pict ure.Bit Map.ScanLine[ i] ; / / gabungan fot o + fram e

for j : = 0 t o I m age10.Pict ur e.Widt h-1 do begin I F( PH2[ 3* j ] = 255) and( PH2[ 3* j + 1] = 255) and ( PH2[ 3* j + 2] = 255) t hen

end else begin PH[ 3* j ] : = ( PH2[ 3* j ] ) ; PH[ 3* j + 1] : = ( PH2[ 3* j + 1] ) ; PH[ 3* j + 2] : = ( PH2[ 3* j + 2] ) ; end ; end; / / for j end; / / for i

im age13.Pict ure: = im age3.Pict ure; / / gabungan fot o + fram e + background - > hasil 2

I m age2.Pict ure: = nil; I m age3.Pict ure: = nil;

ut am a.St at usBar1.Panels[ 2] .Text : = ' background : ' +

I nt ToSt r( I m age12.Pict ure.Widt h) + ' x ' +

I nt ToSt r( I m age12.Pict ure.Height ) + ' pixel ';

end; end.

FORM TAMPILAN FRAME

unit Unit 3_fram e; int erface

uses

Windows, Messages, Sy sUt ils, Var iant s, Classes, Graphics, Cont rols, Form s, Dialogs, Ext Ct rls, j peg, St dCt rls, Ex t Dlgs; t ype

Tfram e = class( TFor m ) I m age1: TI m age; Label1: TLabel; Label2: TLabel; Label4: TLabel; Label5: TLabel; Label6: TLabel; I m age2: TI m age;

OpenPict ureDialog1: TOpenPict ureDialog; I m age3: TI m age;

procedure I m age3Click( Sender: TObj ect ) ;

procedure Label6Click( Sender: TObj ect ) ; procedure Label5Click( Sender: TObj ect ) ; procedure Label1Click( Sender: TObj ect ) ; procedure Label4Click( Sender: TObj ect ) ; procedure Label2Click( Sender: TObj ect ) ; privat e

{ Privat e declarat ions } public

uses Unit 2_ut am a; { $R * .dfm }

procedur e Tfram e.I m age3Click( Sender: TObj ect ) ;

begin / / close; end;

procedur e Tfram e.Label6Click ( Sender: TObj ect ) ; / / klik cancel

begin close; ut am a.show ; end;

procedur e Tfram e.Label5Click ( Sender: TObj ect ) ; / / klik ok

begin

ut am a.I m age13.pict ur e: = im age2.pict ure; ut am a.I m age2.pict ure: = im age2.pict ure; close;

ut am a.St at usBar1.Panels[ 1] .Text : = ' fram e : ' + I nt ToSt r ( I m age2.Pict ure.Widt h) + ' x ' +

I nt ToSt r( I m age2.Pict ure.Height ) + ' pixel ';

ut am a.show ; end;

procedur e Tfram e.Label1Click ( Sender: TObj ect ) ; / / open fram e

var

i, j , am bang, keabuan : int eger; PC, PC2 : PByt eArray;

begin

OpenPict ureDialog1.I nit ialDir : = 'c: \ m y pict ure';

if OpenPict ur eDialog1.Execut e t hen begin

im age2.Pict ur e.LoadFrom File( OpenPict ureDi alog1.FileNam e) ;

end;

if ( im age2.Pict ure.Widt h < > ut am a.I m age10.Pict ure.Widt h) OR ( im age2.Pict ur e.Height < >

ut am a.I m age10.Pict ure.Height ) t hen begin

m essageDlg( 'Ukuran fot o dan fram e yang Anda m asukkan t idak

sam a.',m t error,[ m bOk] ,0) ; exit ;

for i: = 0 t o I m age2.Pict ur e.Height - 1 do begin

PC2 : =

I m age2.Pict ure.Bit Map.ScanLine[ i] ; / / gam bar fram e

for j : = 0 t o I m age2.Pict ure.Widt h- 1 do begin

keabuan: = round( ( PC2[ 3* j ] + PC2[ 3* j + 1] + P C2[ 3* j + 2] ) / 3) ;

I F( keabuan< am bang) t hen begin PC2[ 3* j ] : = 0 ; PC2[ 3* j + 1] : = 0; PC2[ 3* j + 2] : = 0; end else begin PC2[ 3* j ] : = 255; PC2[ 3* j + 1] : = 255; PC2[ 3* j + 2] : = 255; end ; end; / / for j end; / / for i

ut am a.I m age11.Pict ure: = im age2.Pict ure; for i: = 0 t o

ut am a.I m age10.Pict ure.Height - 1 do begin

PC : =

ut am a.I m age10.Pict ure.Bit Map.ScanLine[ i] ; / / gam bar fot o

PC2 : =

I m age2.Pict ure.Bit Map.ScanLine[ i] ; / / gam bar fram e

for j : = 0 t o

ut am a.I m age10.Pict ure.Widt h- 1 do begin

I F( PC2[ 3* j ] = 255) and( PC2[ 3* j + 1] = 255) and ( PC2[ 3* j + 2] = 255) t hen / / j ika pixel berwarna put ih begin PC2[ 3* j ] : = ( PC2[ 3* j ] ) ; PC2[ 3* j + 1] : = ( PC2[ 3* j + 1] ) ; PC2[ 3* j + 2] : = ( PC2[ 3* j + 2] ) ; end else begin PC2[ 3* j ] : = ( PC[ 3* j ] or PC2[ 3* j ] ) ; PC2[ 3* j + 1] : = ( PC[ 3* j + 1] or PC2[ 3* j + 1] ) ; PC2[ 3* j + 2] : = ( PC[ 3* j + 2] or PC2[ 3* j + 2] ) ; end ; end; / / for j end; / / for i

i, j , am bang, keabuan : int eger; PC, PC2, PH : PByt eArray; begin

if

( ut am a.I m age11.Pict ur e.Bit m ap.Pix elForm at = pf24bit ) / / j ika form at fram e 24 bit t hen

begin

am bang: = 128;

im age2.Pict ur e: = ut am a.I m age11.Pict ure; / / m enegaskan pengam bangan unt uk fram e

for i: = 0 t o I m age2.Pict ur e.Height - 1 do begin

PC2 : =

I m age2.Pict ure.Bit Map.ScanLine[ i] ; / / gam bar fram e

for j : = 0 t o I m age2.Pict ur e.Widt h- 1 do

begin

keabuan: = round( ( PC2[ 3* j ] + PC2[ 3* j + 1] + P C2[ 3* j + 2] ) / 3) ;

I F( keabuan > am bang) t hen begin PC2[ 3* j ] : = 0 ; PC2[ 3* j + 1] : = 0; PC2[ 3* j + 2] : = 0; end else begin PC2[ 3* j ] : = 255; PC2[ 3* j + 1] : = 255; PC2[ 3* j + 2] : = 255; end ; end; / / for j end; / / for i

ut am a.I m age11.Pict ure: = im age2.Pict ure; / / fram e yg sudah di- am bang- kan

for i: = 0 t o

ut am a.I m age10.Pict ure.Height - 1 do begin

PC : =

ut am a.I m age10.Pict ure.Bit Map.ScanLine[ i] ; / / gam bar fot o

PC2 : =

I m age2.Pict ure.Bit Map.ScanLine[ i] ; / / gam bar fram e

for j : = 0 t o

ut am a.I m age10.Pict ure.Widt h- 1 do begin

end

else / / j ika pix el berwarna hit am begin PC2[ 3* j ] : = ( PC[ 3* j ] or PC2[ 3* j ] ) ; PC2[ 3* j + 1] : = ( PC[ 3* j + 1] or PC2[ 3* j + 1] ) ; PC2[ 3* j + 2] : = ( PC[ 3* j + 2] or PC2[ 3* j + 2] ) ; end ; end; / / for j end; / / for i end; / / if bit 24 im age2.Repaint ; end;

procedur e Tfram e.Label2Click ( Sender:

Dokumen terkait