Home > JQuery, JavaScript, PHP, Snippets, Tips & Trick > Membuat Thumbnail Image Dengan PHP dan Image Slideshow Dengan Thickbox JQuery

Membuat Thumbnail Image Dengan PHP dan Image Slideshow Dengan Thickbox JQuery

January 5th, 2009 8,752 views Leave a comment Go to comments

Salah satu fasilitas pada website adalah gallery image, dimana para pengunjung dapat melihat kumpulan koleksi gambar dari pemilik web. Biasanya gallery juga digunakan untuk dokumentasi suatu acara.

Pada pemasangan gallery di web ada satu persoalan yang cukup mengganggu, yaitu masalah ukuran file pada tiap gambar . Oleh karena itu gambar dengan ukuran besar sebaiknya tidak boleh langsung ditampilkan di halaman depan gallery anda, lebih baik buat dulu ukuran kecilnya .

Nah, masalah membuat ukuran kecil ini yang cukup merepotkan apabila kita tidak tahu tekniknya, ternyata PHP memberi kemudahan untuk kita dalam me-resize image itu dalam ukuran kecil untuk ditampilkan , bukan sekedar me-resize lebar dan tinggi gambar namun juga me-resize ukuran byte file, teknik ini dinamakan Thumbnail Image .

Dengan membuat thumbnail terlebih dahulu tentunya pengunjung anda bisa melihat preview gambar anda sebelum melihat ukuran sebenarnya, dan manfaat lain adalah menghemat bandwidth hosting web anda .

Untuk membuat thumbnail pada PHP, anda harus pastikan PHP GD ter-install pada paket PHP anda. PHP GD adalah kumpulan fungsi-fungsi pada PHP untuk memanipulasi image . Untuk mengecek apakah PHP GD sudah ter-install pada paket anda lihat saja di PHPINFO() dan temukan info seperti di gambar di bawah ini.


Mengecek apakah PHP GD sudah ter-install dari PHPINFO()

Untuk install PHP GD, mohon tanyakan sama om Google aja yah… keyword-nya "Install PHP GD". ^_^
Tapi biasanya sih di paket PHP saat ini sudah support PHP GD.

Pada artikel kali ini saya ingin menggabungkan PHP GD untuk membuat thumbnail image dan plugins thickbox jquery untuk membuat slideshow ukuran gambar sebenarnya. Untuk lebih jelasnya tentang thickbox, lihat link ini. .

Berikut adalah preview hasil dari program:

Langkah-langkah pembuatan program, pertama-tama pada " index.php " siapkan script spt ini

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<html>
<head>
 <title>Thumbnail Gallery</title>
 <script language="javascript" src="includes/jquery.js"></script>
 <script language="javascript" src="includes/thickbox.js"></script>
 <link href="includes/thickbox.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div align="center">
<?
	$dir = "images/"; // tentukan folder dimana anda menyimpan image
	if ($handle = opendir($dir)) {		
 
	   echo '<table border=1><tr>';
	   $x = 0;
	   while (false !== ($file = readdir($handle))){ // looping untuk mendapatkan daftar file pada suatu folder
		   if($file == '.' || $file == '..') continue; // kalau bukan file gambar dihiraukan
		   if($x%4==0) echo '</tr><tr>'; // apabila sudah looping gambar sebanyak 4x maka buat baris baru
		   $path = $dir.$file;
		   /*
		   		Perhatikan pada tag <a> ada class="thickbox" --> agar ketika gambar ini di tekan akan terbuka 
		   		preview gambar tsb pada layar thickbox. 
		   		Perhatikan juga ada attribute rel="mygallery" --> agar dari gambar satu ke gambar lain terhubung
		   		dan pada layar thickbox terdapat link navigator untuk slideshow gambar.
		   		Untuk lebih jelas ttg thickbox silahkan melihat manual disini 
		   		http://jquery.com/demo/thickbox/
		   */
		   echo '<td><a href="'.$path.'" class="thickbox" rel="mygallery"><img src="thumb.php?img='.$path.'" border="0" /></a></td>';
		   $x++;
	   }	   
	   echo '</tr></table>';
 
	   closedir($handle);
	}	
?>	
</div>
</body>
</html>

Sediakan juga " thumb.php " pada direktory yang sama dengan "index.php ".

<?
	isset($_GET['img']) or die('NO IMAGE');
 
	include "includes/thumbnail.class.php";
	$thumb = new T10Thumbnail;
	$thumb->setMaxWidth(80); // lebar maksimal untuk setiap image adalah 80px
	$thumb->getThumbnail($_GET['img']);	// generate thumbnail image
?>

Sedangkan fungsi-fungsi untuk membuat Thumbnail Image ada di file " thumbnail.class.php " pada folder "includes/".

<?
	class T10Thumbnail{
		var $maxWidth = 200; // default lebar maksimal adalah 200px
 
		function setMaxWidth($maxWidth){ // method untuk mengubah nilai lebar maksimal
			$this->maxWidth = $maxWidth;
		}
 
		function getThumbnail($path){			
			$maxheight = $this->maxWidth; // tinggi maksimal disamakan saja dengan lebar maksimal
 
			if(file_exists($path)){ // cek apakah file yang akan di resize ada
				list($width,$height)=getimagesize($path); // untuk mendapatkan lebar dan tinggi gambar
				// jika lebar image lebih kecil dari ukuran thumbnail yang ditentukan maka tidak perlu di hitung lagi ratio ukurannya
				if($width < $this->maxWidth){ 
					$new_width  = $width;
					$new_height = $height;
				}else{
					if($width>$height) $ratio=$this->maxWidth/$width;
					else $ratio = $maxheight/$height;
 
					$new_width  = $ratio*$width;
					$new_height = $ratio*$height;			
				}
 
			  $path_parts = pathinfo($path);
			  switch($path_parts['extension']){ // ambil extension file untuk mengecek tipe image
			   case "jpeg":
			   case "jpg": 
			      $header = "jpeg";
				  $func1="imagecreatefromjpeg"; // fungsi untuk generate image jpg
				  $func2="imagejpeg"; // fungsi untuk generate image jpg
				break;					
			   case "gif": 
			      $header = "gif";
				  $func1="imagecreatefromgif"; // fungsi untuk generate image gif
				  $func2="imagegif"; // fungsi untuk generate image gif
				break;
			   case "png": 
				  $header = "png";
				  $func1="imagecreatefrompng"; // fungsi untuk generate image png
				  $func2="imagepng"; // fungsi untuk generate image png
				break;
			  }
			  // membuat file php ini ketika dipanggil di browser adalah berupa image
			  header("Content-type: image/$header"); 
 
			  $thumb  = imagecreatetruecolor($new_width,$new_height); // buat resource image dalam ukuran thumbnail
			  $source = $func1($path); // generate image
			  imagecopyresized($thumb,$source,0,0,0,0,$new_width,$new_height,$width,$height); // thumbnail ukuran image
			  $func2($thumb); // generate image
			}
		}		
	}
?>

Penjelasan program saya langsung tulis di setiap script. Dan untuk melihat demo dari program ini klik Link ini .

Download juga program ini di Link ini .

Update 23 Juni 2010:
Untuk versi dengan paging, silahkan download Link ini. Replace file “index.php” di script sebelumnya dengan “index.php” di file “thumbnailgallery_paging.zip”. Lalu tambahkan juga “paging.class.php” sejajar dengan file “index.php”.

Semoga Bermanfaat… Terima kasih… ^_^

(13 votes, average: 4.54 out of 5) KurangBiasaLumayanBagusLuar Biasa
Loading ... Loading ...
  1. baronk
    January 27th, 2009 at 15:25 | #1

    Wah.. top markotop.
    O ya , saya minta tolong di buatkan artikel mengenai cara membuat ARIP ARTIKEL berdasarkan Bulan dan Tahun. Contohnya pada web anda ini dengan nama ARCHIVES… di tunggu ya.. TENX BERAAAAT..

  2. reader
    January 29th, 2009 at 11:58 | #2

    thank yah.. buat tutorialnya.. TOP bgt dah… apalagi lg coba2 pake jquery…. :)

  3. January 29th, 2009 at 18:49 | #3

    makasih banged nich tutorialnya aku jadi bisa ikutan belajar n bisa bawa oleh2 (download) program dari blogwalking ke sini… lain kali aku mampir lagi… boleh ya?

  4. January 30th, 2009 at 09:37 | #4

    iya mas sapta, sering-sering aja mampir…hehehe

  5. February 3rd, 2009 at 10:59 | #5

    Mas mau tanya.. cara buat “block kode” seperti yang mas tulis itu gimana ya?, namanya apa?..
    Di artikel mas kan ada kode program-nya.. Nah cara ngeblok kode program itu gimana caranya mas..

    Makasih ya mas.
    saya minta artikelnya buat dokumentasi saya di website.. :-D

  6. February 3rd, 2009 at 11:42 | #6

    Utk tampilin script dengan format seperti di web saya pake plugins wp-syntax mas
    http://wordpress.org/extend/plugins/wp-syntax/

  7. anak_soleh
    February 13th, 2009 at 19:47 | #7

    wiih… MANTAB……..ten ….

    kembangkan terus yah hehe

  8. March 6th, 2009 at 12:00 | #8

    Mantab mas… :)
    Makasih ya tutorialnya… salam kenal :D

  9. March 25th, 2009 at 18:34 | #9

    mas..nanya, gimana kalo untuk blogspot?
    saya mau bikin slide show yang modelnya seperti filmstrip seperti JonDesign’s tapi tidak terlalu banyak mengapload java. ini supaya tidak terlalu berat loadingnya.

    http://anggaran-budget-manipulation.blogspot.com
    http://e-serba-serbi.blogspot.com/

  10. March 27th, 2009 at 20:03 | #10

    masalahnya blogspot gak support PHP mas, klo di wordpress mungkin masih bisa.

  11. March 29th, 2009 at 19:50 | #11

    Bagus… artikelnya…

  12. June 11th, 2009 at 16:41 | #12

    boss T-10 punya artikel untuk multiple keyword search gak…

    salam,
    ivink3aray

  13. July 23rd, 2009 at 17:41 | #13

    Thnks atas ilmunya …

  14. novi
    September 4th, 2009 at 04:32 | #14

    tolong dong pak, script ubah dan hapus thumbenailnya

  15. September 4th, 2009 at 18:08 | #15

    masalahnya ini gak pake database tapi baca dari direktori yang sudah ditentukan, klo kmu mau nambahin, edit ato hapus data bisa aja asal file yang di upload kmu taro di direktori yg sudah ditentukan tsb

  16. April 19th, 2010 at 14:28 | #16

    Thanks tutorialnya.. very nice tutorials..

  17. alvin
    May 18th, 2010 at 20:29 | #17

    muantap bgt tueh..tHX BGT TOP BGT DAH

  18. May 30th, 2010 at 23:46 | #18

    tq banget nih, buat tugas kuliah gw membantu tq ya

  19. aruld
    June 22nd, 2010 at 14:32 | #19

    Tolong tambahin script buat nampilin nama tilte pada setiap gambar sesuai denga nama file nya???Terima kasih

  20. June 22nd, 2010 at 14:53 | #20

    pada line ke-28 jadiin kyk gini aja mas

     echo '<td align="center"><a href="'.$path.'" class="thickbox" rel="mygallery" title="'.$file.'" rel="nofollow"><img src="thumb.php?img='.$path.'" border="0" /><br />'.$file.'</a></td>';
  21. aruld
    June 22nd, 2010 at 16:26 | #21

    @admin
    terima kasih…..ini tadi saya mencoba dengan data gambar lebih dari 100…tampilannya kok 1 halaman…bagaimana cara buat paging nya?
    terima kasih

  22. June 23rd, 2010 at 13:51 | #22

    buat mas aruld dan pembaca lain yang menanyakan paging, silahkan download Link Ini. Replace file “index.php” di script sebelumnya dengan “index.php” di file “thumbnailgallery_paging.zip”. Lalu tambahkan juga “paging.class.php” sejajar dengan file “index.php”.
    Semoga terbantu masalahnya… ^_^

  23. aruld
    June 23rd, 2010 at 15:39 | #23

    @admin
    terima kasih pak….sangat membantu sekali….

  24. July 27th, 2010 at 13:40 | #24

    lagi belajar nie hehehe

  25. August 12th, 2010 at 15:06 | #25

    wah, terima kasih atas infonya…..sangat membantu sekali…

  26. sarah
    August 19th, 2010 at 17:25 | #26

    klu pke dtabase gmn??
    cpt blz y

  1. No trackbacks yet.