Thursday, December 4, 2008

Membuat thumbnail

Thumbnail adalah versi kecil dari sebuah gambar, sehingga waktu download bisa lebih cepat. Kita akan memuat thumbnail secara otomatis dengan menggunakan GD Library 2, GD Library 2 menghasilkan thumbnail yang lebih bagus juga file yang lebih kecil. Script ini hanya untuk file JPG.

Untuk itu kita buat dulu 2 folder: “images” dan “thumbs”. Folder images untuk menyimpan gambar asli yang kita upload, dan folder thumbs untuk menyimpan thumbnail gambar.

thumbnail.php

<?
function make_thumb($img_src, $img_th)
{
$thumb_on = 'x';
$thumb_size = 150;
$quality = 50;

$img_size = GetImageSize ($img_src);
$img_in = ImageCreateFromJPEG ($img_src);

if ($thumb_on == 'x')
{
$img_y = ($thumb_size/$img_size[0]) * $img_size[1];
$img_x = $thumb_size;
}
else
{
$img_x = ($thumb_size/$img_size[1]) * $img_size[0];
$img_y = $thumb_size;
}

$img_out = ImageCreateTrueColor($img_x, $img_y);
ImageCopyResampled ($img_out, $img_in, 0, 0, 0, 0, $img_x, $img_y, $img_size[0], $img_size[1]);

ImageJPEG ($img_out, $img_th, $quality);
ImageDestroy ($img_out);
ImageDestroy ($img_in);
}

if (isset ($_FILES['image']['name']))
{
$fn = $_FILES['image']['name'];
$src = 'images/'.$fn;
$th = 'thumbs/'.$fn;
if (!@move_uploaded_file ($_FILES['image']['tmp_name'], $src)) die ('Gambar tidak bisa di upload');

make_thumb ($src, $th);
echo "Selesai!";
}
?>
<form enctype="multipart/form-data" action="thumbnail.php" method="post">
Gambar yang akan dibuat thumbnail: <input name="image" type="file"><input type="submit" value="Thumbnail">
</form>
$thumb_on: masukkan “x” untuk lebar atau “y” untuk tinggi thumbnail. Jika memasukkan “x” maka nilai dari $thumb_size akan dijadikan lebar thumbnail.
$thumb_size: ukuran pixel thumbnail.
$quality: kualitas thumbnail, “0” untuk terjelek dan “100” untuk kualitas terbaik.


Menghitung ukuran gambar asli:

$img_size = GetImageSize ($img_src);
$img_in = ImageCreateFromJPEG ($img_src);


Dari setting diatas dihitung ukuran thumbnail:

if ($thumb_on == 'x')
{
$img_y = ($thumb_size/$img_size[0]) * $img_size[1];
$img_x = $thumb_size;
}

else
{
$img_x = ($thumb_size/$img_size[1]) * $img_size[0];
$img_y = $thumb_size;
}


Membuat thumbnail dengan ImageCopyResampled dari GD Library 2 yang menghasilkan gambar lebih bagus:

$img_out = ImageCreateTrueColor($img_x, $img_y);
ImageCopyResampled ($img_out, $img_in, 0, 0, 0, 0, $img_x, $img_y, $img_size[0], $img_size[1]);

ImageJPEG ($img_out, $img_th, $quality);
ImageDestroy ($img_out);
ImageDestroy ($img_in);

Upload file gambar dan memanggil make_thumb($src, $th):
$src = lokasi gambar asli
$th = lokasi thumbnail

if (isset ($_FILES['image']['name']))
{
$fn = $_FILES['image']['name'];
$src = 'images/'.$fn;
$th = 'thumbs/'.$fn;
if (!@move_uploaded_file ($_FILES['image']['tmp_name'], $src)) die ('Gambar tidak bisa di upload');

make_thumb ($src, $th);
echo "Selesai!";
}