• Resize Gambar dengan PHP

    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 resizeping… yaitu teknik pemotongan gambar… jadi gambar yang ukuran 800 x 600 tadi akan diresize dan ngebentuk gambar yang baru, yaitu gambar yang bener2 berukuran 200 x 150 px,,,

    OK, gimana cara kita meng-resize gambar itu? kita pake PeHaPe… (PHP).. hehe…

    kita bikin file yang bernama resize.php, n’ kita bakal bikin fungsi resizeImage yang berisi 5 parameter yang digunain….

    OK daripada banyak bacot qta mulai aja ya.. hehe…

    ni kode programnya…

    <?php
     
    // tentukan lebar, tinggi, file yang mau diresize, format nama file, dan penempatan foto setelah di resize
     
    function resizeImage($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_resize = "fotocrop.jpg";
     
    // jalankan fungsi resize gambar
    // lebar, tinggi, file yang di resize, format gambar, nama file setelah di resize
    resizeImage(200, 150, "$gambar", 'jpg', "$gambar_resize");
    print "Image sebelum di resize : <img src=\"$gambar\"><br /><br />";
    print "Image setelah di resize : <img src=\"$gambar_resize\">";
    ?>

    Perbandingan foto antara cara pertama dan kedua (yang sudah diresize) dapat diliat seperti di bawah ini … (maaf narsis… :P )

    Terlihat tampak sama, tetapi gambar yang kanan diload lebih cepat, untuk bukti silakan masing-masing gambar diklik kanan > view Image..

    Oia saya orangnya narsis ya? hahaha…

    This entry was posted on Saturday, July 18th, 2009 at 20:54 and is filed under PHP, Tutorial. You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.
  • 4 Comments

    Take a look at some of the responses we have had to this article.

    1. May 13th

      Mas itu bukannya resize yaaa… kalo crop kan dipotong tapi yang diatas gambarnya tak berubah cuman skala aja yang berubah….

    2. May 14th

      Yup, resize… maaf bukan Crop.. :)

    3. amyzora
      Jun 21st

      kalo cara crop gimana ya? makasih :)

    4. Jun 23rd

      @amyzora: saya sarankan pake CI supaya gampang… soalnya di CI udah ada librarynya buat crop, resize, dan manipulasi gambar lainnya…

  • Leave a Reply

    Let us know what you thought.

  • Name(required):

    Email(required):

    Website:

    Message:

    Spam Protection by WP-SpamFree