Dulu sempat bikin code untuk update function thumbnailer supaya hasilnya bisa square (bujur sangkar) dan proporsional di posisi tengah gambar (tidak gepeng secara horizontal/vertical walaupun bentuk image asli tidak square).

Karena kebutuhan lain, akhirnya saya update lagi fungsi tersebut supaya bisa lebih pintar. Intinya thumbnailer akan mengecek rasio image source dan membandingkannya dengan rasio image destination, memutuskan rasio terbaik untuk membuat thumbnail, dan melakukan crop pada image untuk membentuk thumbnail sesuai dengan ukuran destination yang diinginkan. Berikut keunggulan fungsi thumbnailer ini:

  1. Free style, ukuran thumbnail bebas dan tidak harus sesuai dengan rasio image
  2. Adjust to Width, ukuran thumbnail bisa disesuaikan dengan rasio image cukup dengan menentukan lebar dari thumbnail
  3. Adjust to Height, penyesuaian dengan rasio image cukup dengan menentukan tinggi dari thumbnail
  4. Caching, thumbnail hanya di generate 1 kali, dan setiap permintaan thumbnail akan tetap menggunakan file yang sama, kecuali bila image source lebih baru dari file cache.
  5. Preview Image, selain berguna untuk membuat thumbnail, fungsi ini juga bisa menampilkan image source.
  6. Various Image Format, bisa mengenali image dari beragam format (diuji dengan format jpg, gif dan png), tapi tidak mengenal transparansi karena thumbnail yang dihasilkan dalam format jpg.

filemtime($src)) {
     $createcachefile = false;
    }
   }
   if($createcachefile===true) {
    $wratio = $w/$width;
    $hratio = $h/$height;
    if($wratio<$hratio) {
     $wtoget = $w;
     $htoget = $height/$width*$w;
     $hdiff = $h-$htoget;
     $xpos = 0;
     $ypos = $hdiff/2;
    } else {
     $wtoget = $width/$height*$h;
     $htoget = $h;
     $wdiff = $w-$wtoget;
     $xpos = $wdiff/2;
     $ypos = 0;
    }
    $imagesource = file_get_contents($src);
    $image = @imagecreatefromstring($imagesource);
    $image_new = imagecreatetruecolor($width, $height);
    imagecopyresampled($image_new, $image, 0, 0, $xpos, $ypos, $width, $height, $wtoget, $htoget);
    imagejpeg($image_new, $cachefile, IMAGES_CACHE_QUALITY);
   }
   $src = $cachefile;
  }
 } else {
  $src  = '';
  $width  = '';
  $height = '';
 }
 if($width!='') $width = "width='$width'";
 if($height!='') $height = "height='$height'";
 $image = "$alt";
 return(str_replace("'", '"', $image));
}
echo draw_image(IMAGES_DIR, 'foto-1.jpg', 'Foto 1', 100, 100);
echo '

'; echo draw_image(IMAGES_DIR, 'foto-1.jpg', 'Foto 1', 100); echo '

'; echo draw_image(IMAGES_DIR, 'foto-1.jpg', 'Foto 1', '', 100); echo '

'; echo draw_image(IMAGES_DIR, 'foto-1.jpg', 'Foto 1'); ?>
  1. Buat file php baru
  2. kopi seluruh code di atas pada file tersebut
  3. Pada lokasi yang sama, buatlah folder ‘images/’ dan ‘images/cache/’
  4. Kopi sebuah file image ke folder images dan rename menjadi ‘foto-1.jpg’
  5. Jalankan file php tersebut, selamat mencoba (^_^)

One thought on “Smart PHP Thumbnailer

  1. Pak Sahat,…
    Ini script untuk munculin kodok nya yach?

    hahahahaha …. (^^)v Peace pak.

    Makin lama, nih blog, makin technical. =D

Leave a Reply

Your email address will not be published. Required fields are marked *