• Tidak ada hasil yang ditemukan

Tampilan Exception Handling Background

BAB IV. IMPLEMENTASI SISTEM

4.1.5. Tampilan Exception Handling Background

Sama halnya ketika user belum memilih foto atau frame namun telah menekan tombol background. Sistem akan menampilkan pesan yang akan menginformasikan kepada user untuk memasukkan foto dan frame terlebih dahulu. Gambar 4.6 merupakan tampilan pesan agar user memasukkan foto dan

frame terlebih dahulu sebelum memasukkan backgrond.

Gambar 4.6. Form message agar foto dan frame dimasukkan sebelum background

Sistem juga akan menampilkan pesan kesalahan ketika user telah memasukkan foto namun langsung memasukkan background. Gambar 4.7 merupakan tampilan pesan agar user memasukkan frame terlebih dahulu sebelum memasukkan backgrond.

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

ShowMessage( 'Masukkan fot o dan fram e dulu') ; exit ;

end

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

ShowMessage( 'Masukkan fram e dulu') ; exit ;

end;

Listing yang digunakan untuk menampilkan pesan adalah seperti di atas ini. Sistem akan melakukan pengecekan apakah foto dan frame telah dimasukkan. Jika foto dan frame belum dimasukkan maka bagian if yang pertama akan dijalankan dengan menampilkan pesan kesalahan. Bagian if yang kedua adalah melakukan pengecekan apabila foto telah dimasukkan namun frame belum dimasukkan maka akan menampilkan pesan untuk memasukkan frame dahulu.

4.1.6. Tampilan Frame

Setelah user memasukkan foto, maka tahap selanjutnya adalah memilih

frame yang telah disediakan oleh sistem atau user juga dapat menggunakan frame -nya sendiri. User dapat menekan tombol frame untuk menampilkan form frame. Tampilan formframe dapat dilihat seperti gambar 4.8 berikut ini:

Gambar 4.8. Form frame

Tampilan form frame menyediakan beberapa fasilitas tambahan yang dapat digunakan untuk memproses bentuk frame tersebut, misalnya memutar posisi frame ke arah 90º, 180º, dan seterusnya searah jarum jam, atau dirubah menjadi bentuk negatifnya. Program menyediakan fasilitas ini agar user dapat memutar posisi frame dan foto. Fasiltas ini dapat dimanfaatkan ketika foto yang masukkan seharusnya dalam bentuk portrait.

User dapat memilih citra frame dengan menekan tombol open frame. Gambar 4.9 akan menampilkan dialog window open picture frame.

Listing yang dimasukkan dalam tombol open frame berisi perintah untuk mengaktifkan OpenPictureDialog dan memasukkan hasil citra yang dipilih ke dalam form citra yang telah disediakan.

if OpenPict ureDialog1.Execut e t hen begin

im age2.Pict ure.LoadFrom File( OpenPict ureDialog1.FileNam e) ; end;

Setelah itu dilakukan proses pengambangan, dengan tujuan agar pada citra

frame hanya memiliki 2 nilai saja, yaitu jika nilai yang dihasilkan dalam perhitungan rerata setiap piksel frame yang dibandingkan dengan nilai ambang dan hasilnya lebih kecil maka nilai akan diganti menjadi 0 atau bernilai hitam. Sebaliknya jika nilai yang dihasilkan dalam perhitungan rerata dan dibandingkan dengan nilai ambang lebih besar maka nilai akan diganti menjadi 255 atau bernilai putih.

for i: = 0 t o I m age2.Pict ure.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] + PC2[ 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

Kemudian dilakukan proses penggabungan antara foto dan frame. Proses yang dilakukan adalah mengecek jika setiap titik pada piksel frame tidak bernilai 255 maka akan dilakukan proses pengabungan antara foto dan frame dengan menggunakan operasi logika OR. Setelah piksel-piksel foto dan frame telah digabungkan maka akan akan dibentuk citra baru dari penggabungan kedua nilai piksel tersebut.

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 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 im age2.Repaint ;

4.1.7. Tampilan Exception Handling Ukuran Frame

Setelah user memilih frame yang akan diolah maka frame tersebut akan dilakukan pengecekan apakah tinggi dan lebar foto yang dimasukkan sama dengan tinggi dan lebar frame. Jika ukuran antara foto dan frame tidak sama maka akan muncul pesan yang akan menginformasikan kepada user agar user dapat memasukkan frame yang lain yang memiliki ukuran yang sama.

Listing yang digunakan untuk melakukan pengecekan ukuran foto dan

frame adalah seperti berikut:

if ( im age2.Pict ure.Widt h < > ut am a.I m age10.Pict ure.Widt h) OR ( im age2.Pict ure.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 ; end;

Gambar 4.10 akan menampilkan pesan yang meninformasikan kepada user

bahwa ukuran foto dan frame tidak sama.

Gambar 4.10. Pesan yang meninformasikan bahwa ukuran foto dan frame tidak sama.

4.1.8. Tampilan Pengolahan Frame

Sistem akan langsung memasukkan frame ke dalam sistem dan akan langsung digabungkan dengan foto yang telah dipilih sebelumnya apabila ukuran foto dan frame sama. Gambar 4.11 akan menampilkan sistem yang telah berhasil menggabungkan foto dan frame.

Gambar 4.11. Tampilan frame yang sudah dimasukkan

Tahap selanjutnya ialah apakah user ingin mengganti bentuk frame yang sudah dipilih oleh user. Pada program tugas akhir ini tersedia beberapa pilihan fasilitas untuk mengedit bentuk frame, yaitu:

1. Putar 90 º Î dipakai untuk memutar bentuk frame menjadi berputar 90º searah jarum jam. Tombol ini dapat diklik berkali-kali jika posisi foto dan frame ingin diputar dalam posisi 180 º, 270 º,360 º.

2. Negatif Î dipakai untuk menggati bentuk frame menjadi negatifnya. Bentuk negatif disisni adalah bagian yang seharusnya menjadi frame akan ditukar dengan bagian yang tidak seharusnya menjadi frame. Jika user mengklik tombol putar 90º maka frame akan ditampilkan seperti pada gambar 4.12.

Gambar 4.12. Tampilan saat tombol putar 90 º ditekan

Putaran 90º akan membuat frame berubah bentuk karena terjadinya pertukaran ukuran citra hasil dan citra frame akan berbeda. Ukuran lebar pada citra frame akan menjadi ukuran tinggi pada citra hasil. Sedangkan ukuran tinggi pada citra frame akan menjadi ukuran lebar pada citra hasil.

w : = I m age2.Pict ure.Widt h; h : = I m age2.Pict ure.Height ; w1 : = h;

h1 : = w;

I m age3.Pict ure.Bit m ap.Widt h : = w1; I m age3.Pict ure.Bit m ap.Height : = h1;

Jika frame merupakan citra dengan format 8 bit maka titik yang digunakan hanya satu dan pada program ini titik piksel dilambangkan dengan titik K. Jika

frame merupakan citra dengan format 8 bit maka titik yang digunakan hanya satu dan pada program ini titik piksel dilambangkan dengan titik K. Sedangkan PC merupakan nama variabel untuk citra fotodan frame.

for y : = 0 t o h- 1 do begin

PC : = I m age2.Pict ure.Bit m ap.ScanLine[ y] ; for x : = 0 t o w- 1 do

Ki[ x, y] : = PC[ x] ;

Putaran 90º dilakukan dengan menukar nilai x dengan y1 dan y dengan w1-1-x1. Kemudian dilakukan pemetaan terhadap koordinat hasil untuk mencari koordinat asal. for x1 : = 0 t o w1- 1 do for y1 : = 0 t o h1- 1 do begin x : = y1; y : = w1- 1- x1;

Ko[ x1, y1] : = Ki[ x, y] ;

Kemudian nilai koordinat tersebut dimasukkan ke dalam memory bitmap

citra hasil.

for y1 : = 0 t o h1- 1 do begin

PH : = I m age3.Pict ure.Bit m ap.ScanLine[ y1] ; for x1 : = 0 t o w1- 1 do PH[ x1] : = Ko[ x1, y1] ; end; Ki : = nil; Ko : = nil; end;

if ( I m age2.Pict ure.Bit m ap.PixelForm at = pf24bit ) t hen

begin

Set Lengt h( Ri, w, h) ; Set Lengt h( Gi, w, h) ; Set Lengt h( Bi, w, h) ; Set Lengt h( Ro, w1, h1) ; Set Lengt h( Go, w1, h1) ;

Set Lengt h( Bo, w1, h1) ; for y : = 0 t o h- 1 do begin

PC : = I m age2.Pict ure.Bit m ap.ScanLine[ y] ; for x : = 0 t o w- 1 do begin Bi[ x, y] : = PC[ 3* x] ; Gi[ x, y] : = PC[ 3* x+ 1] ; Ri[ x, y] : = PC[ 3* x+ 2] ; end; end; for x1 : = 0 t o w1- 1 do for y1 : = 0 t o h1- 1 do begin x : = y1; y : = w1- 1- x1;

Ro[ x1, y1] : = Ri[ x, y] ; Go[ x1, y1] : = Gi[ x, y] ; Bo[ x1, y1] : = Bi[ x, y] ; end;

for y1 : = 0 t o h1- 1 do begin

PH : = I m age3.Pict ure.Bit m ap.ScanLine[ y1] ; for x1 : = 0 t o w1- 1 do begin PH[ 3* x1] : = Bo[ x1, y1] ; PH[ 3* x1+ 1] : = Go[ x1, y1] ; PH[ 3* x1+ 2] : = Ro[ x1, y1] ; end; end; Ri : = nil; Gi : = nil; Bi : = nil; Ro : = nil; Go : = nil; Bo : = nil; end;

Gambar 4.13. Tampilan saat tombol negatif ditekan

Ketika user mengklik tombol negative maka system akan melakukan proses pengambangan negative. Proses ini dimaksudkan supaya pada citra frame

hanya memiliki 2 nilai saja, yaitu jika nilai yang dihasilkan dalam perhitungan rerata dan dibandingkan dengan nilai ambang lebih besar maka nilai akan diganti menjadi 0 atau bernilai hitam. Sebaliknya jika nilai yang dihasilkan dalam perhitungan rerata dan dibandingkan dengan nilai ambang lebih kecil maka nilai akan diganti menjadi 255 atau bernilai putih.

for i: = 0 t o I m age2.Pict ure.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] + PC2[ 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

Setelah user melakukan pemrosesan dengan bentuk frame tersebut maka

user dapat memilih tombol ok dan frame akan masuk ke form utama lagi.

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

Ketika user telah menyejui bentuk frame pada form frame maka tombol ok dapat diklik sehingga frame akan ditampilkan ke dalam form frame. Gambar 4.14 akan menampilkan form utama setelah citra frame sudah dipilih dan telah tertampil pada form utama.

4.1.9. Tampilan Background

Setelah user memilih citra foto dan citra frame, maka tahap selanjutnya ialah memilih citra background yang telah disediakan oleh sistem atau milik user

sendiri. Namun yang perlu diperhatikan oleh user adalah background yang akan dimasukkan oleh user harus memiliki format .BMP. User dapat memilih tombol

background untuk menampilkan dialog window open picture background.

Tampilan dialog window open picture background dapat dilihat seperti gambar 4.15 berikut ini:

Gambar 4.15. Dialog window open picture background

Listing yang dimasukkan dalam tombol open background berisi perintah untuk mengaktifkan OpenPictureDialog dan memasukkan hasil citra yang dipilih ke dalam form citra yang telah disediakan.

OpenPict ureDialog1.I nit ialDir: = 'c: \ m y pict ure'; if OpenPict ureDialog2.Execut e t hen

begin

im age12.Pict ure.LoadFrom File( OpenPict ureDialog2.FileNam e) ; end;

Kemudian dilakukan proses penggabungan antara background dengan hasil1 yang merupakan gabungan antara foto dan frame dengan ukuran yang menyesuaikan dengan ukuran foto. Proses yang dilakukan adalah mengecek jika setiap titik pada piksel frame bernilai 255 maka akan dilakukan proses pengabungan antara background dan hasil1 dengan menggunakan operasi logika AND. Setelah piksel-piksel background dan hasil1 telah digabungkan maka akan akan dibentuk citra baru dari penggabungan kedua nilai piksel tersebut. Di bawah akan dijelaskan listing program proses penggabungan hasil1(foto + frame) dengan

background

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 age13.Pict ure.Bit Map.ScanLine[ i] ; / /gabungan fot o + fram e PH2 : = I m age2.Pict ure.Bit Map.ScanLine[ i] ; / /gabungan fot o + fram e

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

for j : = 0 t o I m age10.Pict ure.Widt h- 1 do 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

Setelah user memilih background maka background akan secara otomatis tertampil pada form utama. Gambar 4.16 akan menampilkan form utama setelah citra background sudah dipilih.

Gambar 4.16. Tampilan citra background yang sudah dimasukkan

Tombol color dapat ditekan jika user ingin merubah hasil yang telah diproses. Kemudian sistem akan mengecek masukan yang user lakukan yaitu jika citra yang dimasukan bukan 24 bit maka akan muncul message box yang menginformasikan kepada user agar user mengganti file masukan. Proses perubahan citra warna menjadi citra grayscale dilakukan dengan menghitung rerata dari setiap piksel yang ada di citra tertsebut.

for i: = 0 t o I m age2.Pict ure.Height - 1 do / / hasil t ruecolor

begin

PC : = I m age2.Pict ure.Bit Map.ScanLine[ i] ; / / hasil t ruecolor

PH : = I m age3.Pict ure.Bit Map.ScanLine[ i] ; / / hasil grayscale

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

PH[ j ] : = Round( ( PC[ 3* j ] + PC[ 3* j + 1] + PC[ 3* j + 2] ) / 3) ; end;

Gambar 4.17 akan menampilkan form color yang menampilkan hasil perubahan warna dari true color menjadi grayscale.

Gambar 4.17. Tampilan hasil dengan merubah warna menjadi grayscale

Gambar 4.18 akan menampilkan form color yang menampilkan hasil perubahan warna dari true color menjadi black-white.

Gambar 4.18. Tampilan hasil dengan merubah warna menjadi black-white

Pada prinsipnya ketika sebuah citra true color akan dirubah menjadi citra

black-white maka hal pertama yang harus dilakukan adalah mencari nilai rerata untuk setiap nilai piksel. Proses pencarian nilai rerata sendiri mirip sekali dengan proses perubahan warna dari true color menjadi grayscale. Setelah masing-masing titik didapat nilai reratanya maka akan dilakukan proses pengambangan lagi untuk mendapatkan 2 nilai, yaitu nilai 0 (hitam) dan nilai 255 (putih).

I m age3.Pict ure.Bit m ap.PixelForm at : = pf8bit ;

I m age3.Pict ure.Bit m ap.Palet t e: = Creat ePalet t e( Palet Keabuan.lpal) ; for i: = 0 t o I m age2.Pict ure.Height - 1 do

begin

PC : = I m age2.Pict ure.Bit Map.ScanLine[ i] ; PH : = I m age3.Pict ure.Bit Map.ScanLine[ i] ; for j : = 0 t o I m age2.Pict ure.Widt h- 1 do

PH[ j ] : = Round( ( PC[ 3* j ] + PC[ 3* j + 1] + PC[ 3* j + 2] ) / 3) ; end;

im age3.repaint ;

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

PH : = I m age3.Pict ure.Bit Map.ScanLine[ i] ; for j : = 0 t o I m age3.Pict ure.Widt h- 1 do if( PH[ j ] < 128) t hen PH[ j ] : = 0 else PH[ j ] : = 255; end; im age3.repaint ; end;

Dokumen terkait