Setiap gambar yang kita pergunakan di Web memiliki format yang berbeda, sebut saja ada JPEG, PNG, dan GIF. Setiap format memiliki kompresi agar gambar yang ditampilkan tidak memiliki bytesize yang besar, tiap file menerapkan sistem kompresi yang berbeda pula. Kali ini, kita akan membahas mengenai kompresi pada GIF. Format GIF menggunakan kompresi alogaritma dari LZW (Lempel – Zev – Welch) yang dimiliki oleh Unisys. Pemegang hak cipta GIF kini dipegang oleh CompuServe Incorporated. Awalnya GIF adalah format yang bebas royalti bagi semua pengguna namun tahun 1995, Unisys memutuskan untuk menarik royalti dari para vendor pengguna GIF.
LZW adalah sistem kompresi yang menggunakan alogaritma, yang mengkompresi gambar dengan metode lossless , artinya tampilan gambar setelah kompresi akan sama dengan sesudah kompresi, tentu saja bila file yang dikompresi memenuhi standar GIF (256 warna), bila tidak, GIF akan menkonversinya menjadi standar GIF.Kompresi LZW, akan membaca terlebih dahulu penggunaan warna dan tekstur yang sama dalam sebuah baris horisontal, yang digunakan secara berulang-ulang atau sama. Setelah itu LZW akan memperbarui gambar tersebut dengan mengambil index elemen gambar yang sering diulang tersebut, kemudian menampilkan kembali index dari elemen- elemen yang sama tersebut. Penggunaan elemen yang sama ini akan menghemat penggunaan kompresi, karena kompresi LZW akan lebih sedikit memerlukan data untuk mengkompresi elemen gambar.
Dari algoritma LZW dapat dijelaskan bahwa :
- Inisialisasi input stream yang mengandung karakter-karekter dasar
- Membaca karakter dari input stream jika EOF maka menuju langkah 5
- Gabungkan karater awal dengan karakter yang dibaca selanjutnya menjadi sebuah string
jika string baru ini tidak ada dalam dictionary maka
- Buat indek baru untuk string baru tersebut
- Menuju Langkah 2
Jika string yang terbentuk telah mempunyai indek di dalam dictionary maka
- Gabungkan karakter sebelumnya dengan karakter yang dibaca atau string yang telah terbentuk menjadi sebuah string baru
- Menuju langkah 2
- Tulis output kode