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...

Convert Foto Resolusi Tinggi dan Ukuran Besar (MB) Tanpa Mengurangi Ukuran Resolusi (PX) dengan PHP

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

<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 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

<?php
if($_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 fungsi
		if(UploadCompress($namaBaru,$name,$direktori,$quality)){
			echo'sukses';
		}else{
			echo'gagal';
		}
	}
}

?>

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

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

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

<?php
function UploadCompress($new_name,$file,$dir,$quality){
  //direktori gambar
  $vdir_upload = $dir;
  $vfile_upload = $vdir_upload . $_FILES[''.$file.'']["name"];

  //Simpan gambar dalam ukuran sebenarnya
  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() 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

 


About Author

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 Fokus Pada Pengembangan Aplikasi Kesehatan, Klinik, Puskesmas dan Rumah Sakit


Comment & Discussions

  • Gilang Sonar Amanu
    Thx mas agung tutorialnya.. bermanfaat bgt :)

  • Saptadi Handoko
    mantap bro, semoga terus dpt berkarya!

  • Dhe Dhe
    trimksh buat tutorial y pak

  • Agung Sucipto
    (y)

  • Lucky Ricky
    gan ini maksimal size berapa ya ? saya coba 10 mb gambar nga bisa.hehe

    • Agung Sucipto

      upload size tergantung server masing masing gan, coba atur di php.ini max uploaded


  • Please LOGIN before if you want to give the comment.