• Tidak ada hasil yang ditemukan

Perbandingan Algoritma Elias Delta Codes Dengan Levenstein Code Dalam Kompresi Citra .Gif

N/A
N/A
Protected

Academic year: 2017

Membagikan "Perbandingan Algoritma Elias Delta Codes Dengan Levenstein Code Dalam Kompresi Citra .Gif"

Copied!
11
0
0

Teks penuh

(1)

LISTING PROGRAM

1.

Form Menu Utama

using System;

using System.Collections.Generic; using System.Drawing;

using System.Windows.Forms; namespace KompresiCitra {

/// <summary>

/// Description of MainForm. /// </summary>

public partial class MainForm : Form {

public MainForm() {

//

// The InitializeComponent() call is required for Windows Forms designer support.

//

InitializeComponent();

}

void KOMPRESIToolStripMenuItemClick(object sender, EventArgs e) {

Kompresi k = new Kompresi(); k.Show();

this.Hide(); }

void DEKOMPRESIToolStripMenuItemClick(object sender, EventArgs e) {

Dekompresi k = new Dekompresi(); k.Show();

this.Hide(); }

void ABOUTToolStripMenuItem1Click(object sender, EventArgs e) {

About k = new About(); k.Show();

this.Hide(); }

void ABOUTToolStripMenuItemClick(object sender, EventArgs e) {

Help k = new Help(); k.Show();

this.Hide(); }

}

(2)

2.

Form Kompresi

namespace KompresiCitra {

/// <summary>

/// Description of Kompresi. /// </summary>

public partial class Kompresi : Form {

Image file; Bitmap bmp;

double fileLength; Color p;

List<int> ch = new List<int>(); List<int> hs = new List<int>(); List<int> hs2 = new List<int>();

public static String[] edc; public static String[] lv;

int[] fr;

int width,height,proses;

public Kompresi() {

//

// The InitializeComponent() call is required for Windows Forms designer support.

//

InitializeComponent();

}

void Button1Click(object sender, EventArgs e) {

OpenFileDialog open = new OpenFileDialog();

open.Filter = "GIF ( *.gif)|*.gif| BITMAP ( *.bmp)|*.bmp"; if (open.ShowDialog() == DialogResult.OK)

{

string metode =

open.FileName.Substring(open.FileName.Length-3, 3); if(metode == "bmp"){

file = Image.FromFile(open.FileName); bmp = new Bitmap(open.FileName); pictureBox1.Image = file;

textBox1.Text = open.FileName;

textBox2.Text = bmp.Height.ToString() + " x " +bmp.Width.ToString();

width = bmp.Width; height = bmp.Height;

fileLength

= new FileInfo(open.FileName).Length * 1.0 /1024;

textBox3.Text = fileLength.ToString()+" kb"; }

else if(metode == "gif") {

byte[] ir = File.ReadAllBytes(open.FileName); Image i = Image.FromStream(new MemoryStream(ir)); bmp = new Bitmap(new Bitmap(i));

(3)

pictureBox1.Image = bmp;

textBox1.Text = open.FileName;

textBox2.Text = bmp.Height.ToString() + " x " +bmp.Width.ToString();

width = bmp.Width; height = bmp.Height;

fileLength

= new FileInfo(open.FileName).Length * 1.0 /1024;

textBox3.Text = fileLength.ToString()+" kb";

} } }

bool cek(int x) {

for(int i=0; i<ch.Count; i++) {

if(ch[i] == x) return false; }

return true; }

void freq(int x) {

for(int i=0; i<ch.Count; i++) {

if(ch[i] == x) fr[i]++; }

}

int indeks(int x) {

for(int i=0; i<ch.Count; i++) {

if(ch[i]==x) return i; }

return 0; }

void init() {

ch.Clear();

for(int i=0; i<height; i++) {

for(int j=0; j<width; j++) {

p = bmp.GetPixel(i,j); if(cek(p.R))

ch.Add(p.R); }

}

fr = new int[ch.Count];

for(int i=0; i<ch.Count;i++) fr[i] = 0;

for(int i=0; i<height; i++) {

(4)

p = bmp.GetPixel(i,j); freq(p.R);

} }

Insertion(); }

void Button2Click(object sender, EventArgs e) {

edc_proses(); lv_proses(); }

string DecToBin(int dec) {

StringBuilder bin = new StringBuilder(); int r = dec % 2;

bin.Insert(0, r); dec = dec / 2; while (dec != 0) {

r = dec % 2; bin.Insert(0, r); dec = dec / 2; }

return bin.ToString(); }

string Reverse(String sb) {

char[] charArray = sb.ToCharArray(); Array.Reverse(charArray);

return new String(charArray); }

int BinToDec(String bin) {

StringBuilder sb = new StringBuilder(Reverse(bin)); int n = 1;

int dec = 0;

for (int i = 0; i < sb.Length; i++) {

dec = dec + (int)(Char.GetNumericValue(sb[i])) * n; n = n * 2;

}

return dec; }

void Encode(String stb) {

for (int i = 0; i < stb.Length; i+= 8) {

String x = stb.Substring(i, 8); int y = BinToDec(x);

hs.Add(y); }

}

void Encode2(String stb) {

for (int i = 0; i < stb.Length; i+= 8) {

String x = stb.Substring(i, 8); int y = BinToDec(x);

(5)

}

long ukuran() {

long temp = 0;

for(int i=0; i<hs.Count; i++) temp+=hs[i].ToString().Length; return temp;

}

long ukuran2() {

long temp = 0;

for(int i=0; i<hs2.Count; i++) temp+=hs2[i].ToString().Length; return temp;

}

} }

}

3.

Form Dekompresi

namespace KompresiCitra {

/// <summary>

/// Description of Dekompresi. /// </summary>

public partial class Dekompresi : Form {

public Dekompresi() {

//

// The InitializeComponent() call is required for Windows Forms designer support.

//

InitializeComponent();

}

int w ,h; Bitmap bmp;

List<int> ch = new List<int>(); List<int> hs = new List<int>(); List<int> pic = new List<int>();

public String[] edc; public String[] lv;

string metode;

void Button1Click(object sender, EventArgs e) {

OpenFileDialog open = new OpenFileDialog();

open.Filter = "Compressed Files( *.edc)|*.edc|Compressed Files( *.lv)|*.lv";

if (open.ShowDialog() == DialogResult.OK) {

ch.Clear(); hs.Clear(); pic.Clear();

(6)

open.FileName.Substring(open.FileName.Length-2, 2); if(metode == "dc")

{

string namaa =

open.FileName.Substring(0, open.FileName.Length- 4) + "e.dat"; FileStream fstreamm

= new FileStream(namaa, FileMode.Open,FileAccess.ReadWrite); StreamReader sreaderr

= new StreamReader(fstreamm);

sreaderr.BaseStream.Seek(0, SeekOrigin.Begin); string keterangan = sreaderr.ReadLine(); string[] info = new string[3];

info = keterangan.Split('~'); w = int.Parse(info[0]); h = int.Parse(info[1]); bmp = new Bitmap(w,h); int n = int.Parse(info[2]);

keterangan = sreaderr.ReadLine(); info = new string[n];

info = keterangan.Split('~'); for(int i = 0;i<n;i++)

ch.Add(int.Parse(info[i]));

keterangan = sreaderr.ReadLine(); info = new string[n];

edc = new string[n];

info = keterangan.Split('~'); for(int i = 0;i<n;i++)

edc[i] = info[i];

sreaderr.Close();

string temp; string nama =

open.FileName.Substring(0, open.FileName.Length); FileStream fstream

= new FileStream(nama, FileMode.Open,FileAccess.ReadWrite); StreamReader sreader

= new StreamReader(fstream);

sreader.BaseStream.Seek(0, SeekOrigin.Begin); while (sreader.Peek() >= 0)

{

temp = sreader.ReadLine(); hs.Add(int.Parse(temp)); }

sreader.Close(); }

else if(metode == "lv") {

string namaa =

open.FileName.Substring(0, open.FileName.Length- 3) + "l.dat"; FileStream fstreamm

= new FileStream(namaa, FileMode.Open,FileAccess.ReadWrite); StreamReader sreaderr

= new StreamReader(fstreamm);

sreaderr.BaseStream.Seek(0, SeekOrigin.Begin); string keterangan = sreaderr.ReadLine(); string[] info = new string[3];

info = keterangan.Split('~'); w = int.Parse(info[0]); h = int.Parse(info[1]); bmp = new Bitmap(w,h); int n = int.Parse(info[2]);

(7)

info = keterangan.Split('~'); for(int i = 0;i<n;i++)

ch.Add(int.Parse(info[i]));

keterangan = sreaderr.ReadLine(); info = new string[n];

lv = new string[n];

info = keterangan.Split('~'); for(int i = 0;i<n;i++)

lv[i] = info[i];

sreaderr.Close();

string temp; string nama =

open.FileName.Substring(0, open.FileName.Length); FileStream fstream

= new FileStream(nama, FileMode.Open,FileAccess.ReadWrite); StreamReader sreader

= new StreamReader(fstream);

sreader.BaseStream.Seek(0, SeekOrigin.Begin); while (sreader.Peek() >= 0)

{

temp = sreader.ReadLine(); hs.Add(int.Parse(temp)); }

sreader.Close(); }

} }

string DecToBin(int dec) {

StringBuilder bin = new StringBuilder(); int r = dec % 2;

bin.Insert(0, r); dec = dec / 2; while (dec != 0) {

r = dec % 2; bin.Insert(0, r); dec = dec / 2; }

return bin.ToString(); }

string Reverse(String sb) {

char[] charArray = sb.ToCharArray(); Array.Reverse(charArray);

return new String(charArray); }

int BinToDec(String bin) {

StringBuilder sb = new StringBuilder(Reverse(bin)); int n = 1;

int dec = 0;

for (int i = 0; i < sb.Length; i++) {

dec = dec + (int)(Char.GetNumericValue(sb[i])) * n; n = n * 2;

}

return dec; }

(8)

{

int k = 0;

for(int i=0; i<h; i++) {

for(int j=0; j<w; j++) {

bmp.SetPixel(i,j,Color.FromArgb(255,pic[k],pic[k], pic[k]));

k++; }

}

pictureBox1.Image = bmp; }

void Button2Click(object sender, EventArgs e) {

if(metode == "dc") {

Stopwatch watch = new Stopwatch();// running time watch.Start();

String dc = Decode(); Decompress(dc); Gambar(); watch.Stop(); textBox2.Text =

Math.Round(Convert.ToDecimal(watch.ElapsedMilliseconds)/1000,4).ToStri ng()+" ms";

}

else if(metode == "lv") {

Stopwatch watch = new Stopwatch();// running time watch.Start();

String lv = Decode(); Decompress2(lv); Gambar();

watch.Stop(); textBox2.Text =

Math.Round(Convert.ToDecimal(watch.ElapsedMilliseconds)/1000,4).ToStri ng()+" ms";

} }

void Button3Click(object sender, EventArgs e) {

SaveFileDialog save = new SaveFileDialog();

save.Filter = "GIF( *.gif)|*.gif|BMP( *.bmp)|*.bmp"; if (save.ShowDialog() == DialogResult.OK)

{

string metode =

save.FileName.Substring(save.FileName.Length-3, 3); if(metode == "bmp")

{

bmp.Save(save.FileName,System.Drawing.Imaging. ImageFormat.Bmp);

}

else if(metode == "gif") {

bmp.Save(save.FileName,System.Drawing.Imaging. ImageFormat.Gif);

} } }

(9)

DAFTAR RIWAYAT HIDUP

PERSONAL DATA

Full Name

: Lili Anggraini

Nick Name

: Lili

Place/ Date of Birth : Medan / 11 Januari 1994

Sex

: Wanita

Religion

: Islam

Nationality

: Indonesia

Address

: Jl. Pasar Lama No. 84 Kp.Lalang,

Kelurahan Kampung Lalang,

Kabupaten. Deli Serdang.

Provinsi Sumatera Utara, Indonesia

Mobile Phone

: +62852-0787-4319

E-mail

: [email protected]

EDUCATION

Bachelor of Computer Science

2014-2016

: Universitas Sumatera Utara, Medan

Diploma of Informatics Engineering

2011-2014

: Universitas Sumatera Utara, Medan

Higher Secondary Education

2008-2011

: SMA Negeri 15 Medan

Secondary Education

2005 - 2008

:

SMP Negeri 9 Medan

Primary Education

1999 - 2005

: SD Negeri 101730 Desa Lalang

Programming

PHP, C#

Database

MySQL

IDE Software

(10)
(11)

Organization

Position

Year

Referensi

Dokumen terkait

Tujuan penelitian dalam tugas akhir ini adalah menunjukkan hasil perbandingan algoritma Run-Length Encoding dan Elias Delta Code dengan menggunakan parameter Cr

Kompresi data adalah suatu proses untuk mengubah sebuah input data stream ( stream sumber atau data mentah asli) ke dalam aliran data yang lain yang berupa output atau stream

Algoritma Run-Length Encoding dan algoritma Elias Delta Code merupakan metode yang dapat digunakan dalam proses kompresi citra digital. Algoritma Run-Length Encoding adalah

Algoritma Run-Length Encoding dan algoritma Elias Delta Code merupakan metode yang dapat digunakan dalam proses kompresi citra

Tujuan penelitian dalam tugas akhir ini adalah menunjukkan hasil perbandingan algoritma Run-Length Encoding dan Elias Delta Code dengan menggunakan parameter Cr

Waktu dekompresi adalah waktu yang dibutuhkan oleh sebuah sistem untuk melakukan proses dekompresi dari mulai pembacaan data hingga proses decoding pada data

Tempat/Tanggal Lahir: Medan, 03 September 1992 Jenis Kelamin: Laki-Laki. Warga Negara: Indonesia

Elias Delta Code merupakan terobosan yang dibuat oleh Piter Elias sebagai algoritma yang canggih yang menerapkan Elias Gamma Code sebagai dasar algoritmanya,