Pembuatan Rancangan Tampilan Aplikasi Implementasi Sistem

3.5. Pembuatan Rancangan Tampilan Aplikasi

Form Menu adalah satu-satunya form yang muncul saat aplikasi dijalankan. Rancangan Menu dapat dilihat seperti pada Gambar 3.10. Gambar 3.10 Rancangan Form Menu Keterangan: 1. Label yang berisi logo aplikasi 2. Label untuk memilih sumber file 3. Tombol untuk menampilkan dialog pilih file input. 4. Label untuk memilih target file 5. Tombol untuk menampilkan dialog pilih file output. 6. Label untuk memilih sumber file 7. Radiobutton untuk memilih metode LZMA Input 3 Output 5 Source 2 Target 4 Tindakan 9 Algoritma 6 LZMA 7 RLE 8 Kompresi 10 Dekompresi 11 Mulai 12 Reset 13 Keluar 14 15 LZMA AND RLE COMPRESSED 1 8. Radiobutton untuk memilih metode Run Length Encoding 9. Label untuk memilih tindakan 10. Radiobutton untuk memilih tindakan kompresi 11. Radiobutton untuk memilih tindakan dekompresi 12. Tombol untuk memulai proses kompresi. 13. Tombol untuk reset sumber dan target file 14. Tombol untuk keluar dari program 15. Label untuk ringkasan hasil proses kompresi ataupun dekompresi BAB 4 IMPLEMENTASI DAN PENGUJIAN

4.1. Implementasi Sistem

Implementasi dari aplikasi dirancang dengan menggunakan bahasa pemrograman Java dengan JDK versi 1.7. Penggunaan bahasa pemrograman Java bertujuan untuk memberikan kemudahan kepada penulis dalam pembuatan source code dan tampilan aplikasi. Bahasa pemrograman Java dipilih oleh penulis karena bahasa pemrograman Java merupakan bahasa yang bersifat opensource. Proses implementasi sistem yang terjadi di dalam aplikasi yang dirancang dibagi menjadi dua, yaitu: 1. Implementasi LZMA untuk melakukan kompresi dan dekompresi terhadap citra bmp citra png.

2. Implementasi RLE untuk melakukan kompresi dan dekompresi terhadap citra

bmp citra png. Hal tersebut bertujuan untuk mengetahui bagaimana kinerja aplikasi secara garis besar sebelum aplikasi dijalankan. Sebagai contoh, input citra bmp yang dapat dilihat seperti pada gambar 4.1. Gambar 4.1. Citra Berformat BMP Proses yang dilakukan pertama kali adalah mendapatkan byte array dari file citra input dengan menggunakan potongan kode program yang dapat dilihat pada tabel 4.1. Tabel 4.1. Potongan kode program untuk mendapatkan byte array dari citra No Kode Program Keterangan 1 public static byte[] getBytesString name throws Exception{ Deklarasi nama fungsi 2 FileInputStream fis = new FileInputStreamname; Deklarasi variabel objek dari class FileInputStream 3 ByteArrayOutputStream baos = new ByteArrayOutputStream; Deklarasi variabel objek dari class ByteArrayOutputStream 4 byte[] bytes = new byte[1]; Deklarasi array byte sebanyak 1 array yang akan digunakan sebagai buffer 5 long file = new Filename.length; Deklarasi variabel dengan tipe data long yang nilainya sebesar ukuran file citra 6 forint a=0; afile;a++{ Deklarasi looping dari a=0 sampai dengan a ukuran file citra 7 fis.readbytes; Proses membaca bytes yang ada pada file 8 baos.writea; baos.flush; Proses penulisan nilai byte yang telah dibaca kedalam objek dari class ByteArrayOutputStream 9 }return baos.toByteArray;} Pengembalian nilai berupa array byte dari file citra Berdasarkan potongan kode program pada tabel 4.1. maka potongan byte array dari file citra input adalah sebagai berikut: -119, 80, 78, 71, 13, 10, 26, 10, 0, 0, 0, 13, 73, 72, 68, 82, 0, 0, 4, -62, 0, 0, 2, 107, 8, 2, 0, 0, 0, -115, -42, -88, -21, 0, 0, 0, 1, 115, 82, 71, 66, 0, -82, -50, 28, -23, 0, 0, 0, 4, 103, 65, 77, 65, 0, 0, -79, -113, 11, -4, 97, 5, 0, 0, 0, 32, 99, 72, 82, 77, 0, 0, 122, 38, 0, 0, -128, -124, 0, 0, -6, 0, 0, 0, -128, -24, 0, 0, 117, 48, 0, 0, -22, 96, 0, 0, 58, -104, 0, 0, 23, 112, -100, -70, 81, 60, 0, 0, -1, -114, 73, 68, 65, 84, 120, 94, -20, -3, 5, 116, 20, -39, -34, 54, 124, -113, 67, -110, 118, -9, -72, -109, -32, 62, 12, 14, 51, -56, 8, 48, -56, 12, -61, -32, -18, -18, 78, 18, -100, -32, 22, -126, 67, 2, 68, 72, -120, 43, 9, 49, 44, - 18, 33, -82, 4, 66, -124, 24, -10, 86, -41, -75, -85, -103, 3, -25, 62, -25, 126, -98, -11, - 82, 111, 125, -33, -6, -70, -41, 111, 13, 59, -43, -35, -43, 86, 85, -35, -41, -4, 107, -17, -3, -27, -121, 15, 31, -66, 96, 46, 37, 77, -17, 117, 109, 52, -66, 100, -2, -2, -14, 75, 93, -109, 44, -6, -25, 29, 63, -71, 23, -71, 47, -77, -26, 47, -65, 36, -85, -3, -14, -61, 59, -26, 42, 102, 109, 95, 126, -115, 37, 31, -104, -11, 127, 96, 30, -13, -19, 7, 114, - 81, -9, -52, 19, -44, 61, -30, 123, 102, 17, -82, -7, -14, 3, 89, -37, -105, -52, 35, 126, 8, -30, 43, -84, -10, -35, 103, -9, -3, 82, -9, 114, -103, -11, 127, -11, 5, -13, -12, -66, 96, -98, -34, 23, -52, -115, -34, -21, 94, -75, -18, 110, -52, -115, 117, -81, -128, -66, 15, 7, -26, -91, 81, -51, -49, -34, 13, -35, 77, 117, -49, 70, -9, 62, -109, 71, 124, -49, 60, -12, …

4.1.1. Implementasi Kompresi Dan Dekompresi Menggunakan Lempel-Ziv- Markov Chain Algorithm LZMA

untuk melakukan kompresi file citra dengan LZMA, penulis menerapkannya dengan menggunakan library tambahan sebagaimana telah dijelaskan pada sub-bab 1.3. Potongan kode program untuk menjalankan proses kompresi dengan LZMA menggunakan library tambahan dapat dilihat pada Tabel 4.2. Tabel 4.2. Potongan kode program untuk melakukan kompresi dengan LZMA No. Kode Program Keterangan 1. String[] args = new String[]{e,jTextField1.getText, jTextField2.getText}; Deklarasi nama variabel yang berisi informasi nama file input dan nama file output kompresi. 2. Date start = new Date; Deklarasi nama variabel untuk mencatat waktu mulai kompresi. 3. try { LzmaAlone.mainargs; } catch Exception ex { ex.printStackTrace; } Perintah untuk memulai kompresi dengan LZMA. Potongan kode program pada Tabel 4.2. akan melakukan kompresi pada byte array yang diberikan sebagai input. Apabila kode program pada Tabel 4.2. dijalankan menggunakan byte array dari file citra input akan menghasilkan sebuah file output yang isinya dapat dilihat seperti pada Gambar 4.2. Gambar 4.2. File Hasil Kompresi Citra BMP Menggunakan LZMA

4.1.2. Implementasi Kompresi Dan Dekompresi Menggunakan Run Length Encoding

Sedangkan potongan kode program untuk melakukan kompresi dengan Run Length Encoding dapat dilihat seperti pada Tabel 4.3. Tabel 4.3. Potongan kode program untuk melakukan kompresi dengan RLE No Kode Program Keterangan 1 public void compressString input_file,String output_file throws IOException{ Deklarasi nama fungsi 2 long start_time=0; Deklarasi nama variabel 3 ifreport_filenames{ System.out.printlnoriginal file:+input_file; System.out.printlnCompressed file:+output_file;} Jika laporan file hasil ingin ditampilkan 4 ifreport_times{ start_time=System.currentTimeMillis;} Jika waktu mulai kompresi ingin ditampilkan 5 int zerf=0; int onef=0; Deklarasi nama variabel 6 try{ in=new FileInputStreaminput_file; out=new FileOutputStreamoutput_file; byte[]array=new byte[1]; int rb; int last=-1; int lastbo=-2; int c; Deklarasi nama variabel dalam blok try 7 whilec=getc=-1 { putcc; iflastbo==last { ifc==last { int count=0; whilec=getc=0 { ifc==last { count++;} else { break;} } ifc0 { ifcount=256count256==0{ count-=256;} else { ifcount==0 count=-1;} } ifcount=0{ putccount;} whilecount=count-256=0{ putclast;} ifc=0{ putcc; }}} lastbo=last; last=c;} in.close; out.close; }catchException e{ System.out.printlnerror while processing file; e.printStackTrace;} Proses kompresi dengan Run Length Encoding 8 ifreport_times{ start_time=System.currentTimeMillis- start_time; System.out.printlntimetaken:+start_time10 100F+seconds;} Proses penghitungan waktu yang dihabiskan selama kompresi 9 ifreport_size{ File f1=new Fileinput_file; File f2=new Fileoutput_file; long f11=f1.length; long f21=f2.length; System.out.printlnoriginal file size :+f11+bytes; System.out.printlncompressed file size :+f21+bytes; Proses penghitungan besar ukuran file sebelum dan setelah kompresi 10 iff11f21{ System.out.printlncompressed by :+f11- f21+bytes;} else{ System.out.printlnfile gained in size by +f21-f11+bytes;} Jika ukuran file setelah proses kompresi lebih besar dari sebelum dilakukan kompresi 11 iff11==0L{ f11=1L;} Jika ukuran file setelah kompresi sama dengan nol. 12 System.out.printlncompression ratio :+f11-f2110000f11100F+;} System.out.println;} Proses penghitungan rasio ukuran file setelah kompresi dan sebelum kompresi Potongan kode program pada Tabel 4.3. akan melakukan kompresi pada byte array yang diberikan sebagai input. Apabila kode program pada Tabel 4.3. dijalankan menggunakan byte array dari file citra input akan menghasilkan sebuah file output yang isinya dapat dilihat seperti pada Gambar 4.3. Gambar 4.3. File Hasil Kompresi Citra BMP Menggunakan RLE Kompresi citra yang dilakukan menggunakan Lempel-Ziv-Markov Chain Algorithm LZMA maupun dengan Run Length Encoding mengkompresi setiap bytes dari gambar yang kita input untuk dikompresi menjadi file terkompresi berformat .erl.

4.2. Pengujian Aplikasi