Sekarang pertanyaannya bagaimana gambar kita bisa diResize menjadi beberapa ukuran yang berbeda? tentu saja tidak mungkin ada seorang operator dibelakang layar yang satu per satu merubah gambar pengguna setiap saat ^^; semuanya dilakukan dengan program.
Pada PHP ada library yang bernama imageGD dan imageGD2. singkatnya library tersebut berfungsi untuk menciptakan atau memanipulasi file image/gambar. perbedaan GD dan GD2 adalah bahwa GD merupakan library lama bawaan dari bahasa C sedangkan GD2 merupakan versi yang sudah disesuaikan untuk PHP. disini kita akan menggunakan GD2.
Untuk memastikan bahwa library/extension GD2 sudah diaktifkan, lakukan langkah2 dibawah ini :
- Buka file php.ini pada root folder PHP.
- cari text extension=php_gd2.dll.
- Jika terdapat karakter titik koma ";" diawal baris, berarti extension ini masih belum diaktifkan, untuk mengaktifkannya, hapus karakter tersebut.
- Setelah dihapus, restart web server
form.html
<html>
<head>
<title>Image Resize</title>
</head>
<body>
<form action="image_resize.php" method="post" enctype="multipart/form-data">
Masukan gambar :
<input type="file" name="gambar" />
<input type="submit" value="Kirim" />
</form>
</body>
</html>
image_resize.php
<?
function imageResize(
$dir /* contoh : "folder_saya/" */,
$img_name /* contoh : "myimage" */,
$image /* object image, contoh : $_FILES['img'] */,
$lebar /* lebar proporsional maximum, contoh : 120 */,
$panjang /* lebar proporsional maximum, contoh : 220 */,
$save_ori = true /* kasih TRUE jika ingin menyimpan ukuran file asli */
) {
$dir .= "/";
//Check tipe file, jika file bukan image jpg, png, gif maka function ini akan dihentikan
if (!($ext = getImageType($image))) {
return FALSE;
}
$ext = "." . $ext;
//direktori gambar
$vdir_upload = $dir;
$vfile_upload = $vdir_upload . $img_name;
$ori = $vdir_upload . "ori-" . $img_name . $ext;
//Simpan gambar dalam ukuran sebenarnya
copy($image["tmp_name"], $ori);
//identitas file asli
if ($ext == ".jpg") {
$im_src = imagecreatefromjpeg($ori);
}elseif ($ext == ".gif") {
$im_src = imagecreatefromgif($ori);
}elseif ($ext == ".png") {
$im_src = imagecreatefrompng($ori);
}
$src_width = imageSX($im_src);
$src_height = imageSY($im_src);
//Simpan dalam versi thumbnail
//menentukan maksimum lebar dan tinggi gambar tergantung lebih besar mana antar lebar dan tinggi gambar
if ($src_width > $src_height) {
$dst_width = ($lebar >= $src_width ? $src_width : $lebar);
$dst_height = ($dst_width/$src_width)*$src_height;
}else{
$dst_height = ($panjang >= $src_width ? $src_width : $panjang);
$dst_width = ($dst_height/$src_height)*$src_width;
}
//proses perubahan ukuran
$im = imagecreatetruecolor($dst_width,$dst_height);
imagecopyresampled($im, $im_src, 0, 0, 0, 0, $dst_width, $dst_height, $src_width, $src_height);
//Simpan gambar
if ($ext == ".jpg") {
imagejpeg($im, $vdir_upload . $img_name . $ext);
}elseif ($ext == ".gif") {
imagegif($im, $vdir_upload . $img_name . $ext);
}elseif ($ext == ".png") {
imagepng($im, $vdir_upload . $img_name . $ext);
}
imagedestroy($im_src);
imagedestroy($im);
if (!$save_ori) {
unlink ($ori);
}
return TRUE;
}
//fungsi untuk mengecek jenis gambar
function getImageType ($image) {
if ($image['type'] == "image/jpeg" || $image['type'] == "image/pjpeg") {
return "jpg";
}elseif ($image['type'] == "image/gif") {
return "gif";
}elseif ($image['type'] == "image/png" || $image['type'] == "image/x-png") {
return "png";
}else{
return FALSE;
}
}
// Proses pemanggilan fungsi resizeImage dan menampilkannya ke layar browser
if (isset($_FILES['gambar'])) {
// membuat folder img (antisipasi jika folder img belum dibuat)
@mkdir("img");
// membuat gambar dengan ukuran lebar dan tinggi maksumum 75px
imageResize("img", "img_75", $_FILES['gambar'], 75, 75, true);
// membuat gambar dengan ukuran lebar dan tinggi maksumum 300px
imageResize("img", "img_200", $_FILES['gambar'], 200, 200, false);
// membuat gambar dengan ukuran lebar dan tinggi maksumum 600px
imageResize("img", "img_300", $_FILES['gambar'], 300, 300, false);
$ext = getImageType($_FILES['gambar']);
?>
<img src="img/img_75.<?=$ext?>" />
<img src="img/img_200.<?=$ext?>" />
<img src="img/img_300.<?=$ext?>" />
<img src="img/ori-img_75.<?=$ext?>" />
<?
}else{
echo "File gagal terkirim ke server...";
}
?>
untuk mencobanya, buka form.html pada browser dengan memasukan URL misalnya http://localhost/testimageresize/form.html. Lalu masukan gambar yang ingin diResize pada input file dan submit. Maka yang akan tampil pada layar browser adalah 3 gambar yang sudah diResize dan 1 gambar dengan ukuran originalnya seperti dibawah ini :
Mohon maaf jika gambarnya kurang menarik, hhe.
Selamat mencoba :)

No comments:
Post a Comment