Convert Foto Resolusi Tinggi Dan Ukuran Besar (Mb) Tanpa Mengurangi Ukuran Resolusi (Px) Dengan Php

Selamat Berjumpa Kembali sobat JagoCoding.com, sudah usang tidak post tutorial sebab gres tau beberapa hari yang kemudian kalo artikel sebelumnya udah di publish sama om admin. Tutorial kali ini masih bekerjasama dengan pengelolaan image pada php, sesuai judul posting ini, akan menjelaskan bagaimana melaksanakan 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

<form action="proses.php" method="POST" enctype="multipart/form-data"><input type="file" name="foto"/><input type="number" min="1" max="100" value="50" name="quality"/><input type="submit" name="proses" value="Proses"/></form>

Penjelasan:

Kode diatas merupakan form yang akan dipakai 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

<?phpif($_POST['proses']){$file=$_FILES['foto']['name'];if(!empty($file)){$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 %//jalankan fungsiif(UploadCompress($namaBaru,$name,$direktori,$quality)){echo'sukses';}else{echo'gagal';}}}?>

Penjelasan:

if($_POST['proses']){...}

kode diatas memastikan semoga tidak diperbolehkan saluran pribadi ke file proses.php, script ini berjalan kalau mendapat kiriman data dari form dengan method POST dan nama datanya yaitu ‘proses’

$file=$_FILES['foto']['name'];

Kode diatas untuk mendapat isu nama file yang telah dipilih pengguna melalui form, dan isyarat ini dipakai untuk memastikan apakah penggunan telah menentukan file atau belum ketika melaksanakan proses pengiriman data

if(!empty($file)){..}

Logika diatas untuk memvalidasi apakah variable $file itu kosong atau tidak, kalau pengguna menentukan 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, sebab pada proses konversi gambar ini akan memakai function.

variable $direktori berisi direktori penyimpanan foto / gambar yang akan diupload, akhiri nama folder dengan tanda “/”. variable $name berisi string yang mengambarkan name pada inputan form sesuai dengan file index.php

<input type="file" name="foto"/>

nah script ini yang dimaksud.

variable $namaBaru berisi nama gres file yang dibentuk scara random sesuai tanggal dan waktu sekarang, variable $quality berisi inputan data dari pengguna pada form dari file index.php

//jalankan fungsiif(UploadCompress($namaBaru,$name,$direktori,$quality)){echo'sukses';}else{echo'gagal';}

Logika diatas menjalankan fungsi UploadCompress($namaBaru,$name,$direktori,$quality), kalau fungsi mengembalikannilai true maka cetak sukses, kalau salah cetak gagal, Sampai disini proses belum akan berjalan, sebab niscaya akan terjadi fatal error, sebab tidak adanya fungsi UploadCompress(). Baiklah Kita akan ke tahap selanjutnya

tambahkan script berikut pada file proses.php

<?phpfunction UploadCompress($new_name,$file,$dir,$quality){  //direktori gambar  $vdir_upload = $dir;  $vfile_upload = $vdir_upload . $_FILES[''.$file.'']["name"];  //Simpan gambar dalam ukuran sebetulnya  move_uploaded_file($_FILES[''.$file.'']["tmp_name"], $dir.$_FILES[''.$file.'']["name"]);  $source_url=$dir.$_FILES[''.$file.'']["name"];  $info = getimagesize($source_url);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() mempunyai 4 parameter :

  1. $new_name merupakan nama gres untuk gambar / foto yang akan diupload, dan ini dilarang 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 dipakai oleh sistem, variable $vfile_upload berisi direktori dan nama file orisinil yang akan diupload. misalnya

$dir=’upload/’; kemudian file yang dipilih yaitu image.jpg maka keluaran variable $vfile_upload yaitu ‘upload/image.jpg’;

//Simpan gambar dalam ukuran sebenarnyamove_uploaded_file($_FILES[''.$file.'']["tmp_name"], $dir.$_FILES[''.$file.'']["name"]);

nah sebelum melaksanakan konversi gambar, gambar tersebut harus diupload dulu pada sistem dengan memakai 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 gres saja kita upload, dan variable $info berisi data array dari fungsi getimagesize($source_url) fungsi ini memperlihatkan isu selengkap-lengkapnya ihwal gambar yang gres 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 gres 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 menciptakan sebuah gambar gres atau kopian dari gambar yang telah kita upload tadi, dan variable $ext berisi extension untuk menghubungkan nama gres gambar dengan extension semoga menjadi sebuah file gres yang sempurna.

 if(imagejpeg($image, $dir.$new_name.$ext, $quality)){unlink($source_url);return true;}else{unlink($source_url);return false;}

setelah menciptakan kopian dari gambar yang gres saja kita upload, logika ini menjalankan untuk menciptakan file tersebut kedalam direktori, nama file gres dan kulitas gambar yang telah kita konfigurasi, fungsi ini mengembalikan true kalau berhasil menciptakan gambar yang telah di konversi, kalau gagal akan mengembalikan nilai false,

unlink($source_url);

fungsi diatas dipakai untuk menghapus gambar orisinil yang kita upload, tujuannya semoga tidak terjadi penumpukan file yang orisinil pada direktori, sehingga yang ada hanyalah gambar yang telah di konversi

 

berikut yaitu screen shoot yang menakjubkan

File gambar sebelum dilakukan konversi

 

Author: 
    author
    No related post!