Crop Gambar dengan PHP
Posted on 18. Jul, 2009 by Cheyuz in PHP, Tutorial
Untuk mengoptimalisasi kecepatan sebuah Website, kita harus meratiin berbagai kriteria, salah satunya adalah ukuran/dimensi image (gambar)…
Kebayang ga, klo kita misalnya ngebuat halaman profil anggota yang mengandung foto, truz ukuran foto yang diupload si anggota tersebut adalah 800 x 600 px misalnya… nah, kita pengen supaya foto yang dicantumin di profil itu adalah 200 x 150 px.. gimana caranya?
cara pertama, kita bisa ngebuat tag:
<img src=”foto.jpg” width=”200″ height=”150″>
n’ hasil’y bakal keluar sebuah gambar yang terlihat berukuran 200 x px.. yang ukuran sebenarnya adalah 800 x 600 px…
Nah, sebenernya cara tersebut ga efektif lho… kenapa? soale c gambar itu ukuran’y masih tetep gede… n’ kalo qta klik kanan > view Image, maka gambar asli’y bakalan muncul… terlihat gambar ukuran 800 x 600… dan tentu ngeload’y pasti lemot,,,, hehe..
Nah, sedangkan cara kedua adalah… kita bisa pake trik buat nge-optimalin gambar tersebut, yaitu pake cara cropping… yaitu teknik pemotongan gambar… jadi gambar yang ukuran 800 x 600 tadi akan dicrop dan ngebentuk gambar yang baru, yaitu gambar yang bener2 berukuran 200 x 150 px,,,
OK, gimana cara kita meng-crop gambar itu? kita pake PeHaPe… (PHP).. hehe…
kita bikin file yang bernama crop.php, n’ kita bakal bikin fungsi cropImage yang berisi 5 parameter yang digunain….
OK daripada banyak bacot qta mulai aja ya.. hehe…
ni kode programnya…
<?php // temtukan lebar, tinggi, file yang mau dicrop, format nama file, dan penempatan foto setelah di crop function cropImage($nw, $nh, $source, $stype, $dest) { $size = getimagesize($source); // ukuran gambar $w = $size[0]; $h = $size[1]; switch($stype) { // format gambar case 'gif': $simg = imagecreatefromgif($source); break; case 'jpg': $simg = imagecreatefromjpeg($source); break; case 'png': $simg = imagecreatefrompng($source); break; } $dimg = imagecreatetruecolor($nw, $nh); // menciptakan image baru $wm = $w/$nw; $hm = $h/$nh; $h_height = $nh/2; $w_height = $nw/2; if($w> $h) { $adjusted_width = $w / $hm; $half_width = $adjusted_width / 2; $int_width = $half_width - $w_height; imagecopyresampled($dimg,$simg,-$int_width,0,0,0,$adjusted_width,$nh,$w,$h); } elseif(($w <$h) || ($w == $h)) { $adjusted_height = $h / $wm; $half_height = $adjusted_height / 2; $int_height = $half_height - $h_height; imagecopyresampled($dimg,$simg,0,-$int_height,0,0,$nw,$adjusted_height,$w,$h); } else { imagecopyresampled($dimg,$simg,0,0,0,0,$nw,$nh,$w,$h); } imagejpeg($dimg,$dest,100); } $gambar = "foto.jpg"; $gambar_crop = "fotocrop.jpg"; // jalankan fungsi crop gambar // lebar, tinggi, file yang di crop, format gambar, nama file setelah di crop cropImage(200, 150, "$gambar", 'jpg', "$gambar_crop"); print "<h2>Image sebelum di crop : <br> <img src=$gambar> <br><br>"; print "Image setelah di crop : <br> <img src=$gambar_crop>"; ?>
Perbandingan foto antara cara pertama dan kedua (cropping) dapat diliat seperti di bawah ini … (maaf narsis…
)
![]() |
![]() |
Terlihat tampak sama, tetapi gambar yang kanan diload lebih cepat, untuk bukti silakan masing-masing gambar diklik kanan > view Image..
Oia aq orangnya narsis ya? hahaha…







2 Comments
Herdian sc
13. May, 2010
Mas itu bukannya resize yaaa… kalo crop kan dipotong tapi yang diatas gambarnya tak berubah cuman skala aja yang berubah….
Cheyuz
14. May, 2010
Yup, resize… maaf bukan Crop..
Leave a reply