Untuk merancang tampilan aplikasi ,
*Membuka MATLAB.
*File- New - GUI.
*Kemudian GUI default, simpan dengan nama Kompresi_citra.fig.
*Kemudian muncul Kompresi_citra.fig,
untuk merancang tampilan yang akan dibuat , dengan menarik komponen-komponen
yang berada di sebelah kiri ke dalam area rancangan. Kemudian rancang seperti gambar di bawah ini
- Komponen Axes dengan tag citra_asli. Untuk menampilkan citra asli atau gambar sebelum terkompresi.
- Komponen Axes dengan tag citra_compresi. Untuk menampilka citra kompresi atau gambar hasil kompresi.
- Static text dengan string ‘-‘ dan tag name1 . Untuk menampilkan informasi nama citra asli.
- Static text dengan string ‘-‘ dan tag size1 . Untuk menampilkan informasi size citra asli.
- Static text dengan string ‘-‘ dan tag name2. Untuk menampilkan informasi nama citra hasil kompresi.
- Static text dengan string ‘-‘ dan tag size2. Untuk menampilkan informasi size citra hasil kompresi.
- Static text dengan string ‘-‘ dan tag date2. Untuk menampilkan informasi tanggal modifikasi citra hasil kompresi.
- Static text
dengan string Citra Asli.
- Static text dengan string Citra Terkompresi.
- Static text dengan string KOMPRESI CITRA.
- Pushbutton dengan string Buka dan tag pushbutton1.
- Pushbutton dengan string Kompresi dan tag pushbutton2.
- Pushbutton dengan string Keluar dan tag pushbutton3.
Setelah rancangan tadi jadi, otomatis Kompresi-citra.m akan muncul , di M-file ini masukan
script program ke dalam rancangan yang dibuat tadi.
Penulisan kodeini akan tereksekusi ketika user
menekan tombol buka. Kemudian kode untuk membuka file citra dan menapilkan
informasi citra pada static text.
function pushbutton1_Callback(hObject, eventdata, handles)
[nama_file1,nama_path1]=uigetfile({'*.bmp;,*.jpg','File
Citra(*.bmp,*.jpg)';
'*.bmp','File Bitmap(*.bmp)';
'*.jpg','File JPEG(*.jpg)';
'*.*','Semua File(*.*)'},'Buka File Citra Host/Asli');
if~isequal(nama_file1,0)
handles.data1=imread(fullfile(nama_path1,nama_file1));
info=imfinfo(fullfile(nama_path1,nama_file1));
size_file=info.FileSize/1000;
guidata(hObject,handles);
handles.current_data1=handles.data1;
axes(handles.citra_asli);
imshow(handles.data1);
set(handles.name1,'String',nama_file1);
set(handles.size1,'String',size_file);
else
return;
end
Penulisan kode untuk mengompres dan menyimpan file
dengan nama lain. Ditentukan disini bahwa kompresi file jpeg yang dilakukan
adalah dengan kualitas sebesar 50 dari 100.
function pushbutton2_Callback(hObject, eventdata, handles)
[nama_file_simpan,path_simpan]=uiputfile({'*.jpg','File
Citra(*.jpg)';
'*.jpg','Citra JPEG(*.jpg)';
'*.*','Semua File(*.*)'},'Menyimpan File Citra Hasil Kompresi JPEG');
imwrite(handles.data1,fullfile(path_simpan,nama_file_simpan),'Quality',50);
citra_kompres=imread(fullfile(path_simpan,nama_file_simpan));
guidata(hObject,
handles);
axes(handles.citra_kompresi);
imshow(citra_kompres);
Penulisan kode untuk mengambil data gambar dan
menampilakan ke dalam static text.
info=imfinfo(fullfile(path_simpan,nama_file_simpan));
size_file_simpan=info.FileSize/1000;
set(handles.name2,'String',nama_file_simpan);
set(handles.size2,'String',size_file_simpan);
set(handles.date2,'String',info.FileModDate);
Penulisan kode untuk menutup aplikasi, jika user
menekan tombol keluar.
function pushbutton3_Callback(hObject, eventdata, handles)
selection=questdlg(['Keluar' get(handles.figure1,'Name')''],['Keluar' get(handles.figure1,'Name')''],'Ya','Tidak','Ya');
if strcmp(selection,'Tidak')
return;
end
delete(handles.figure1)
Pada function pushbutton1_Callback(hObject,
eventdata, handles), digunakan fungi uigetfile
untuk membaca file citra dengan format
file yang didefinisikan. Kemudian
digunakan fungsi ~isequal(nama_file1,0)
tes kondisi yang menyatakan keberadaan
file. Jika filenya ada maka isequal() menyatakan nilai 1, 0 jika sebaliknya.
Fungsi imread ( fullfile(nama_path1,nama_file1)) digunakan
untuk membaca file direktori nma_path1 dan nama filenya adalah nama_file1. Fullfile
digunakan untuk membaca file lengkap dengan direktorinya.
Fungsi imfinfo digunakan untuk memberikan semua
informasi file yang dibaca ( nama, ukuran dan tanggal modifikasi ). Pada fungsi
imfinfo size data yang ditampilkan
dalam ukuran byte, maka dilakukan konversi ke kilobyte.
Statemen axes digunakan untuk menghandle tempat
untuk file citra yang akan ditampilkan, sedangkan untuk menampilkan citra
digunakan statemen imshow.Sedangkan
untuk menampilkan informasi tentang citra digunakan set(handles.text,’String’,infoFile).
Kemudian berikan
script program untuk proses dari kompresi JPEG. Pada matlab, kompresi JPEG
terdapat pada toolbox image processing yang tergabung dalam perintah imwrite,
yaitu: imwrite(A,filename,fmt) dengan
A adalah citra asli yang dapat berupa citra hitam putih maupun citra berwarna.Filename
adalah nama file hasil kompresi JPEG. Sedangkan fmt sebenarnya digunakan untuk
menspesifikasikan quality kompresi yang
nilainya antara 1 sampai 100, namun dalam hal ini bersifat optional.
Untuk menambah tampilan interaktif, tambahkan question dialog yang akan
ditampilkan ketika pengguna memilih tombol keluar. Untuk menutup figure dan
aplikasi jika pengguna memilih yes ketika muncul question dialog, gunakan statement delete(handles,figure1),
maka aplikasi akan tertutup.
Selamat mencoba... :)
permisi min mau tanya ini linknya udah mati ya ?
ReplyDeletesoalnya mau liat mfile detailnya