1 2 Convert Foto Resolusi Tinggi dan Ukuran Besar (MB) Tanpa Mengurangi Ukuran Resolusi (PX) dengan PHP Oleh: Agung Sucipto Selamat Berjumpa Kembali s...
Convert Foto Resolusi Tinggi dan Ukuran Besar (MB) Tanpa Mengurangi Ukuran Resolusi (PX) dengan PHP Oleh: Agung Sucipto
Selamat Berjumpa Kembali sahabat JagoCoding.com, sudah lama tidak post tutorial karena baru tau beberapa hari yang lalu kalo artikel sebelumnya udah di publish sama om admin. Tutorial kali ini masih berhubungan dengan pengelolaan image pada php, sesuai judul posting ini, akan menjelaskan bagaimana melakukan...
Selamat Berjumpa Kembali sahabat JagoCoding.com, sudah lama tidak post tutorial karena baru tau beberapa hari yang lalu kalo artikel sebelumnya udah di publish sama om admin. Tutorial kali ini masih berhubungan dengan pengelolaan image pada php, sesuai judul posting ini, akan menjelaskan bagaimana melakukan konversi ukuran gambar / foto yang berukuran besar (misal:5mb, resolusi 5000px X 2000px) menjadi ukuran yang lebih kecil tanpa mengurangi resolusi pada gambar dengan teknik reduce quality image. Oke Langsung saja. Pada Tutorial kali ini memerlukan 2 buah file php dan sebuah folder File Pertama index.php sebagai code untuk menampilkan form upload foto / gambar File Kedua proses.php sebagai code pemrosesan data kiriman dari index.php Folder Upload Digunakan untuk menyimpan Foto /Gambar yang diupload.
Langkah Pertama index.php Penjelasan: Kode diatas merupakan form yang akan digunakan sebagai interface untuk mengupload foto / gambar action="proses.php" Merupakan alamat pengiriman data form, method="POST" Merupakan
metode pengiriman data, enctype="multipart/form-data" ini berfungsi untuk pengiriman data dengan type FILE, jika ingin mengupload dengan type FILE, wajib mencantumkan ini. Pada form ini akan dikirimkan 2 data, yaitu: gambar/ foto dan data angka yang merupakan % quality yang dikehendai pengguna.
proses.php tahap Pertama Penjelasan: if($_POST['proses']){...} kode diatas memastikan agar tidak diperbolehkan akses langsung ke file proses.php, script ini berjalan jika mendapat kiriman data dari form dengan method POST dan nama datanya adalah 'proses' $file=$_FILES['foto']['name']; Kode diatas untuk mendapatkan informasi nama file yang telah dipilih pengguna melalui form, dan kode ini digunakan untuk memastikan apakah penggunan telah memilih file atau belum saat melakukan proses pengiriman data if(!empty($file)){..}
Logika diatas untuk memvalidasi apakah variable $file itu kosong atau tidak, jika pengguna memilih file pada form maka variable ini seharusnya tidak kosong,jika tidak dipilih variable ini akan kosong. Jika variable tidak(!) kosong(empty) maka lakukan proses logika. $direktori="upload/"; //tempat upload foto $name='foto'; //name pada input type file $namaBaru='upload'.date('Y-m-d H-i-s'); //name pada input type file $quality=$_POST['quality']; //konversi kualitas gambar dalam satuan % Diatas terdapat 4 variable yang wajib di configurasi pada tahap ini, karena pada proses konversi gambar ini akan menggunakan function. variable $direktori berisi direktori penyimpanan foto / gambar yang akan diupload, akhiri nama folder dengan tanda "/". variable $name berisi string yang menandakan name pada inputan form sesuai dengan file index.php nah script ini yang dimaksud. variable $namaBaru berisi nama baru file yang dibuat scara random sesuai tanggal dan waktu sekarang, variable $quality berisi inputan data dari pengguna pada form dari file index.php //jalankan fungsi if(UploadCompress($namaBaru,$name,$direktori,$quality)){ echo'sukses'; }else{ echo'gagal'; } Logika diatas menjalankan fungsi UploadCompress($namaBaru,$name,$direktori,$quality), jika fungsi mengembalikannilai true maka cetak sukses, jika salah cetak gagal, Sampai disini proses belum akan berjalan, karena pasti akan terjadi fatal error, karena tidak adanya fungsi UploadCompress(). Baiklah Kita akan ke tahap selanjutnya tambahkan script berikut pada file proses.php
if ($info['mime'] == 'image/jpeg'){ $image = imagecreatefromjpeg($source_url); $ext='.jpg'; } elseif($info['mime'] == 'image/gif'){ $image = imagecreatefromgif($source_url); $ext='.gif'; }elseif($info['mime'] == 'image/png'){ $image = imagecreatefrompng($source_url); $ext='.png'; } if(imagejpeg($image, $dir.$new_name.$ext, $quality)){ unlink($source_url); return true; }else{ unlink($source_url); return false; } } ?> Penjelasan: Function UploadCompress() memiliki 4 parameter : 1. $new_name merupakan nama baru untuk gambar / foto yang akan diupload, dan ini tidak boleh kosong 2. $file merupakan nama inputan pada type file form yang dikirim untuk diproses 3. $dir merupakan direktori penyimpanan atau pemrosesan gambar 4. $quality merupakan persentase qualitas yang akan di konversi pada gambar //direktori gambar $vdir_upload = $dir; $vfile_upload = $vdir_upload . $_FILES[''.$file.'']["name"]; variable $vdir_upload berisi dengan direktori yang akan digunakan oleh sistem, variable $vfile_upload berisi direktori dan nama file asli yang akan diupload. misalnya $dir='upload/'; lalu file yang dipilih adalah image.jpg maka keluaran variable $vfile_upload adalah 'upload/image.jpg'; //Simpan gambar dalam ukuran sebenarnya move_uploaded_file($_FILES[''.$file.'']["tmp_name"], $dir.$_FILES[''.$file.'']["name"]); nah sebelum melakukan konversi gambar, gambar tersebut harus diupload dulu pada sistem dengan menggunakan fungsi move_uploaded_file(temporary,directory+file)
temporary merupakan penyimpanan sementara pada temp memory beserta nama file,directory+file berisi folder dan nama file yang telah kita konfigurasi. pada tahap ini gambar telah berhasil diupload ke sistem dengan ukuran dan resolusi sebenarnya. $source_url=$dir.$_FILES[''.$file.'']["name"]; $info = getimagesize($source_url); variable $source_url berisi folder dan nama file yang baru saja kita upload, dan variable $info berisi data array dari fungsi getimagesize($source_url) fungsi ini memberikan informasi selengkap-lengkapnya tentang gambar yang baru saja kita upload. fungsi ini bertujuan untuk membaca tipe gambar yang akan di konversi. if ($info['mime'] == 'image/jpeg'){ $image = imagecreatefromjpeg($source_url); $ext='.jpg'; } elseif($info['mime'] == 'image/gif'){ $image = imagecreatefromgif($source_url); $ext='.gif'; }elseif($info['mime'] == 'image/png'){ $image = imagecreatefrompng($source_url); $ext='.png'; } dari variable $info terdapat sebuah nama array 'mime' yang berisi type atau jenis gambar yang baru saja kita upload, disini dibatasi untuk tipe jpg, png, dan gif, untuk tiap pembuatan gambar dari php menjalankan fungsi imageX yang berbeda sesuai dengan tipe gambar, nah variable $image berisi perintah untuk membuat sebuah gambar baru atau kopian dari gambar yang telah kita upload tadi, dan variable $ext berisi extension untuk menghubungkan nama baru gambar dengan extension agar menjadi sebuah file baru yang sempurna. if(imagejpeg($image, $dir.$new_name.$ext, $quality)){ unlink($source_url); return true; }else{ unlink($source_url); return false; } setelah membuat kopian dari gambar yang baru saja kita upload, logika ini menjalankan untuk membuat file tersebut kedalam direktori, nama file baru dan kulitas gambar yang telah kita konfigurasi, fungsi ini mengembalikan true jika berhasil membuat gambar yang telah di konversi, jika gagal akan mengembalikan nilai false, unlink($source_url); fungsi diatas digunakan untuk menghapus gambar asli yang kita upload, tujuannya agar tidak terjadi penumpukan file yang asli pada direktori, sehingga yang ada hanyalah gambar yang telah di
konversi
berikut adalah screen shoot yang menakjubkan File gambar sebelum dilakukan konversi
Tentang Penulis Agung Sucipto Saya adalah alumni UIN SUSKA RIAU yang sangat gemar dan akrab sekali dengan web programming, bisa dikatakan walau koding itu rumit, tapi itulah passion saya