Membuat thumbnail dengan php

membuat thumbnail dengan php

Istilah kata thumbnail diartikan sebagai versi kecil dari sebuah gambar yang ditampilkan di komputer. Thumbnail ini digunakan untuk menggantikan gambar yang memiliki ukuran besar sehingga dapat ditampilkan lebih kecil dan cepat ke layar.

Untuk membuat thumbnail ini saya menggunakan sebuah class yang isinya berupa function serta rutin-rutin yang melakukan duplikat gambar dengan ukuran tertentu dari sebuah alamat gambar. Lihat kode class berikut :

class thumbnailGenerator {

    var $allowableTypes = array(
  IMAGETYPE_GIF,
  IMAGETYPE_JPEG,
  IMAGETYPE_PNG
    );

    public function imageCreateFromFile($filename, $imageType) {

  switch($imageType) {
  case IMAGETYPE_GIF  : return imagecreatefromgif($filename);
  case IMAGETYPE_JPEG : return imagecreatefromjpeg($filename);
  case IMAGETYPE_PNG  : return imagecreatefrompng($filename);
  default   : return false;
  }

    }

    /**
     * Generates a thumbnail image using the file at $sourceFilename and either writing it
     * out to a new file or directly to the browser.
     *
     * @param string $sourceFilename Filename for the image to have thumbnail made from
     * @param integer $maxWidth The maxium width for the resulting thumbnail
     * @param integer $maxHeight The maxium height for the resulting thumbnail
     * @param string $targetFormatOrFilename Either a filename extension (gif|jpg|png) or the
     *   filename the resulting file should be written to. This is optional and if not specified
     *   will send a jpg to the browser.
     * @return boolean true if the image could be created, false if not
     */
    public function generate($sourceFilename, $maxWidth, $maxHeight, $targetFormatOrFilename = 'jpg') {

  $size = getimagesize($sourceFilename); // 0 = width, 1 = height, 2 = type

  // check to make sure source image is in allowable format
  if(!in_array($size[2], $this->allowableTypes)) {
  return false;
  }

  // work out the extension, what target filename should be and output function to call
  $pathinfo = pathinfo($targetFormatOrFilename);
  if($pathinfo['basename'] == $pathinfo['filename']) {
  $extension = strtolower($targetFormatOrFilename);
  // set target to null so writes out to browser
  $targetFormatOrFilename = null;
  }
  else {
  $extension = strtolower($pathinfo['extension']);
  }

  switch($extension) {
  case 'gif' : $function = 'imagegif'; break;
  case 'png' : $function = 'imagepng'; break;
  default    : $function = 'imagejpeg'; break;
  }

  // load the image and return false if didn't work
  $source = $this->imageCreateFromFile($sourceFilename, $size[2]);
  if(!$source) {
  return false;
  }

  // write out the appropriate HTTP headers if going to browser
  if($targetFormatOrFilename == null) {
  if($extension == 'jpg') {
                header("Content-Type: image/jpeg");
            }
            else {
                header("Content-Type: image/$extension");
            }
        }

        // if the source fits within the maximum then no need to resize
        if($size[0] <= $maxWidth && $size[1] <= $maxHeight) {
            $function($source, $targetFormatOrFilename);
        }
        else {

            $ratioWidth = $maxWidth / $size[0];
            $ratioHeight = $maxHeight / $size[1];

            // use smallest ratio
            if($ratioWidth < $ratioHeight) {
                $newWidth = $maxWidth;
                $newHeight = round($size[1] * $ratioWidth);
            }
            else {
                $newWidth = round($size[0] * $ratioHeight);
                $newHeight = $maxHeight;
            }

            $target = imagecreatetruecolor($newWidth, $newHeight);
            imagecopyresampled($target, $source, 0, 0, 0, 0, $newWidth, $newHeight, $size[0], $size[1]);
            $function($target, $targetFormatOrFilename);
        }
        return true;
    }
}

Class diatas mempu menduplikat gambar dengan jenis png, jpg atau gif dengan hasil output standard dalam format jpg.

Cara penggunaan class

 Berikut ini contoh penggunaan untuk output standard dengan ukuran 100 x 100 pixel:

<?php
  include("thumbnailGenerator.php");
  $tg = new thumbnailGenerator;
  $gambar="photoku.jpg";
  $tg->generate($photoku, 100, 100);
?>

Kita juga bisa membuat hasil output dengan format berbeda seperti png/gif dengan cara :

<?php
  include("thumbnailGenerator.php");
  $tg = new thumbnailGenerator;
  $gambar="photoku.jpg";
  $tg->generate($photoku, 100, 100,'png');
?>

Contoh diatas melakukannya secara langsung tanpa menyimpan file versi kecilnya dalam file, jadi hanya menampilkkanya di browser. Untuk melakukan duplikat gambar dalam versi kecilnya dan disimpan dalam file berbeda bisa dilakukan dengan cara berikut :

<?php
  include("thumbnailGenerator.php");
  $tg = new thumbnailGenerator;
  $gambar="photoku.jpg";
  $tg->generate($photoku, 100, 100,'photoku-kecil.jpg');
?>

Dengan penggunaan thumbnail, proses menampilkan gambar dengan ukuran-ukuran yang besar bisa dikurangi karena yang dikirim ke browser hanya versi kecilnya saja sehingga proses tampilnya gambar akan lebih cepat.

Anda bisa bayangkan jika kita memiliki photo-photo dengan ukuran 1000 pixel lebih harus ditampilkan dalam browser pasti akan memerlukan waktu lama karena harus didowload lebih dahulu. Anda bisa padukan cara thumbnail ini dengan aplikasi-aplikasi php yang anda buat seperti aplikasi karyawan dengan photo, proses upload gambar, atau aplikasi mahasiswa dengan php seperti tutorial saya sebelumnya.

Mungkin anda tertarik dengan tulisan saya berikut : Menampilkan gambar dari database, cara memasukkan gambar dalam web, membuat aplikasi data mahasiswa dengan php.

Download contoh lengkap pembuatan thumbnail dengan php

Semoga bermanfaat

Zainal Hakim

** Bebas disunting dengan menyebutkan sumber **

Komentar

Halaman Lainya

  • Membuat fungsi cek data mysql dengan php
    Proses pengecekan apakah data sudah ada dalam database tentunya pasti kita lakukan berulang-ulang dalam sebuah aplikasi php. Untuk mempermudah proses pengecekannya kita memerlukan sebuah fungsi/function yang gampang dipanggil setiap saat. Berikut ini saya ingin berbagi tentang bagaimana membuat fungsi tersebut.
  • Membuat function di php
    Function adalah kumpulan baris program yang digunakan untuk melakukan proses tertentu dengan tujuan yang sama. Function akan mengembalikan nilai atau hasil yang sudah diproses kepada rutin atau variabel yang menggunakannya. Function dibuat agar program utama dapat ditulis lebih sederhana dan pengulangan proses dapat dilakukan dengan lebih mudah. Dalam php terdapat tiga jenis function yang bisa dijalankan yaitu User-defined, internal dan anonymous functions. Pada artikel berikut saya akan menjelaskan tentang bagaimana membuat function sediri (User Defined) dalam php.
  • Membuat aplikasi data mahasiswa dengan PHP - Bagian 3
    Proses tahap awal dari membuat database, tabel, membuat formulir input data mahasiswa, proses simpan dan upload photo mahasiswa sudah dilakukan pada artikel Membuat aplikasi data mahasiswa dengan PHP - Bagian 1 dan Bagian 2, sekarang membuat laporan hasil input data mahasiswa. Laporan ini akan dibuat menghubungkan kebeberapa bagian yaitu pencarian data mahasiswa, delete/menghapus data mahasiswa dan mengupdate data mahasiswa. Silahkan menyimak tahapan lanjutan berikut ini.
  • Membuat nomor transaksi diawali 0000
    Jika kita membuat aplikasi yang berhubungan dengan proses transaksi maka akan membuat penomoran secara otomatis yang format nomornya terdiri dari beberapa angka sesuai urutan transaksinya. Nomor transaksi biasanya diawali dari angka terkecil yaitu satu tapi ditampilkan dalam digit angka ratusan atau ribuan. Misal untuk transaksi no 1 maka akan ditampilkan dengan angka 001 atau 0001.
  • Masalah seputar upload file dengan php
    Minat terhadap bahasan tentang upload file dengan php kayanya sangat tinggi, ini saya lihat dari banyaknya pengunjung yang datang ke situs saya ini mencari informasi tentang bagaimana membuat form upload, membuat upload ke database dll. Oleh karena itu saya akan berbagi informasi tentang hal yang sering terjadi pada saat membuat fasilitas upload file dengan php, mudahan ini berguna buat teman-teman yang sedang mendalaminya.

Kiriman terbaru