Cara Mengupload Photo seperti Photo Galeri Friendster menggunakan PHP
Bagi Programmer PHP yang baru memulai biasanya akan mencoba mengupload photo tanpa diregenerate terlebih dahulu sehingga file sebesar apapun fotonya maka ia akan simpan kedalam hosting. Coba kita lihat apa yang dilakukan oleh friendster.com atau website yang sering menyediakan fasilitas photo galeri bagi membernya. dan ternyata ketika si member mengupload photo maka system akan mengenerate menjadi ukuran yang lebih kecil dan membuat duplikasi berdasarkan kebutuhan, misalkan untuk ukuran thumnail 100 pixel dan ukuran zoom sebesar 500 pixel. Bagaimana mana caranya? mari kita belajar bersama-sama.
Dalam hal ini kita akan menggunakan fasilitas GD Librari dan biasanya sudah terinstall otomatis, coba kita lihat di phpinfonya, pastikan sudah terinstall, dan satu lagi kita menggunakan GD2 bukan GD1.
Hal pertama yang kita lakukan biasanya adalah membuat form upload itu sendiri, anggap saja kita sudah punya database member yang mempunyai field nama,id,gambarthum,gambarzoom,captiongambar dengan MySQL, selanjutnya kita akan buat formnya seperti dibawah ini :
Photo | : | |
Keterangan | : | <? echo $ket ?> |
Sisa Karakter |
||
kita simpan sebagai file upload.php misalnya, Kita lihat file diatas, ada beberapa javascript yang saya tambahkan yaitu berfungsi untuk membatasi caption atau keterangan suatu gambar, saya batasi 250 karakter, sekarang kita akan buat file untuk simpannya dengan nama simpan.php yang isinya sebagai berikut :
$keterangan = $_POST[keterangan];
$id = $_POST[id];
$lokasiphoto = "/home/adisumaryadi/public_html/galeri/"; //pastikan lokasi ini sudah dichmod 777
$lebar_gambar_maks=500; //ukuran gambar zooming
$lebar_gambar_kecil_maks=200; // ukuran gambar kecil
$lebar_gambar_kecil_maks1=100; // ukuran gambar kecil
$time = date("Ymdhis");
$namafoto1 ="$_SESSION[user_id]_$time";
if($_FILES[gambar][size] > 0){
$jenisgambar = $_FILES[gambar][name];
$jenisgambar = explode(".",$jenisgambar);
$jenis = $jenisgambar[1];
$nama_foto = "$namafoto1"."."."$jenis";
$nama_fotobesar = "$namafoto1".""."besar".".$jenis";
if(($jenis=="jpeg") || ($jenis=="jpg") || ($jenis=="JPEG") || ($jenis=="JPG") )
{
$src_img = imagecreatefromjpeg($_FILES[gambar][tmp_name]);
$lebar_awal = imagesx($src_img);
$tinggi_awal = imagesy($src_img);
$new_w=$lebar_gambar_kecil_maks;
$new_h = ($new_w/$lebar_awal)*$tinggi_awal;
$dst_img = imagecreatetruecolor($new_w,$new_h);
imagecopyresized($dst_img,$src_img,0,0,0,0,$new_w, $new_h,imagesx($src_img),imagesy($src_img));
imagejpeg($dst_img, "$lokasiphoto$nama_foto");
$foto="$nama_foto";
$src_img = imagecreatefromjpeg($_FILES[gambar][tmp_name]);
$lebar_awal = imagesx($src_img);
$tinggi_awal = imagesy($src_img);
$new_w=$lebar_gambar_maks;
$new_h = ($new_w/$lebar_awal)*$tinggi_awal;
$dst_img = imagecreatetruecolor($new_w,$new_h);
imagecopyresized($dst_img,$src_img,0,0,0,0,$new_w, $new_h,imagesx($src_img),imagesy($src_img));
imagejpeg($dst_img, "$lokasiphoto$nama_fotobesar");
$fotobesar="$nama_fotobesar";
$benar_2 = true;
}
else if(($jenis=="gif"))
{
$src_img = imagecreatefromgif($_FILES[gambar][tmp_name]);
$lebar_awal = imagesx($src_img);
$tinggi_awal = imagesy($src_img);
$new_w=$lebar_gambar_kecil_maks;
$new_h = ($new_w/$lebar_awal)*$tinggi_awal;
$dst_img = imagecreatetruecolor($new_w,$new_h);
imagecopyresized($dst_img,$src_img,0,0,0,0, $new_w,$new_h,imagesx($src_img),imagesy($src_img));
imagegif($dst_img, "$lokasiphoto$nama_foto");
$foto="$nama_foto";
$src_img = imagecreatefromgif($_FILES[gambar][tmp_name]);
$lebar_awal = imagesx($src_img);
$tinggi_awal = imagesy($src_img);
$new_w=$lebar_gambar_kecil_maks;
$new_h = ($new_w/$lebar_awal)*$tinggi_awal;
$dst_img = imagecreatetruecolor($new_w,$new_h);
imagecopyresized($dst_img,$src_img,0,0,0,0, $new_w,$new_h,imagesx($src_img),imagesy($src_img));
imagegif($dst_img, "$lokasiphoto$nama_fotobesar");
$fotobesar="$nama_fotobesar";
$benar_2 = true;
} else { $benar_2 =false;}
if($benar_2)
{
// update file member
$sql = "update member set gambarthum='$nama_foto',gambarzoom='$nama_fotobesar', captiongambar='$keterangan' where id='$_SESSION[user_id]'";
// eksekusi SQL menggunakan kesukaan anda dan querynya sepertinya seperti diatas dan baiknya menghasilkan parameter $hsl bernilai true atau false
}
if($hsl) {
echo"
berhasil upload photo
";}
else
{
echo"
Gagal upload photo
";
}
}
?>
Sekarang tugasnya adalah menampilkan kedalam webkita. Coba kita lihat file yang digenerate tadi maka akan menghasilkan file yang berukuran kecil dan besar seperti dibawah ini :
#adisumaryadi@adilinux : cd /home/adisumaryadi/public_html/album
#adisumaryadi@adilinux : ls
dan hasilnya adalah
-rw-r--r-- 1 www-data www-data 12228 2008-01-14 11:27 1_20080114112706besar.jpg
-rw-r--r-- 1 www-data www-data 5381 2008-01-14 11:27 1_20080114112706.jpg
-rw-r--r-- 1 www-data www-data 16851 2008-01-14 11:32 1_20080114113203besar.jpg
-rw-r--r-- 1 www-data www-data 7483 2008-01-14 11:32 1_20080114113203.jpg
-rw-r--r-- 1 www-data www-data 9307 2008-01-14 11:32 1_20080114113233besar.jpg
-rw-r--r-- 1 www-data www-data 4302 2008-01-14 11:32 1_20080114113233.jpg
-rw-r--r-- 1 www-data www-data 21119 2008-01-14 11:44 1_20080114114403besar.jpg
-rw-r--r-- 1 www-data www-data 8125 2008-01-14 11:44 1_20080114114403.jpg
-rw-r--r-- 1 www-data www-data 16311 2008-01-14 11:44 1_20080114114430besar.jpg
-rw-r--r-- 1 www-data www-data 7035 2008-01-14 11:44 1_20080114114430.jpg