• 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

: lie2_anggraini@yahoo.com

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

PENDIDIKAN ANAK USIA DINI DAN PENDIDIKAN MASYARAKAT DIREKTORAT PEMBINAAN PENDIDIKAN ANAK USIA DINI.

2009 Novel: Tegar Bengawan Pemenang I Sayembara Penulisan Buku Pengayaan PUSBUK KEMENDIKBUD 2009 2009 Prophetic Learning Pro-U Media (Cetakan ke-2 pd 2010) 2008 Novel:

KELIMA  Dengan berlakunya Keputusan Bupati ini maka Keputusan Bupati Bantul Nomor 194 Tahun 2007 tentang Pembentukan Tim Regulatory Impact Assesment

[r]

bahwa berdasarkan pertimbangan sebagaimana dimaksud huruf a, perlu menetapkan Keputusan Bupati Bantul tentang Pembentukan Majelis dan Sekretariat Tuntutan

[r]

Pengaruh Model Kooperatif Tipe Make A Match Terhadap Hasil Belajar Matematika Siswa Kelas VII SMP Negeri 9 Lubuklinggau Pengaruh Model Pembelajaran Kooperatif Tipe Make

• Penyediaan infrastruktur yang mendukung gaya pendidikan era Revolusi Industri 4.0 dengan 4 kemungkinan pembelajaran (konvensional, konvensional plus memanfaatkan hasil