Archive for the ‘PHP’ Category

Filed Under (PHP) by bayu on January-17-2008

Artikel ini akan menjelaskan cara pembuatan thumbnail image yang proposional seperti

situs flickr. Thumbnail didapat dari hasil resize gambar yang sebenarnya, kemudian

mengambil bentuk tengahnya, dan diambil kembali sekian persen. Langkah-langkahnya

sebagai berikut :

Catatan * : Hanya untuk format gambar (JPG,JPEG)

1. Pastikan pustaka GD sudah diaktifkan agar PHP dapat mendukung

pembuatan dan resize grafis secara on the fly.
Caranya:
- buka file configurasi php(php.ini) dengan text editor.
- Cari ;extension=php_gd.dll
- Hilangkan tanda ; sehingga menjadi extension=php_gd.dll

2. Buat folder “img” pada direktori htdocs(untuk web server Apache) atau

wwwroot(untuk web server IIS)

3. Buat file php seperti di bawah ini dan simpan dengan nama

“create_thumb.php” di direktori yg sama dengan folder “img”:

<?php

$vdir_upload = ‘img/’;
$vfile_upload = $vdir_upload . $_FILES[’img’][’name’];
if(!move_uploaded_file($_FILES[’img’][’tmp_name’], $vfile_upload))
exit(”Upload Error”);
else
createThumbnail($vfile_upload);

function createThumbnail($file_name){
header(”Content-type: image/jpeg”);

//identitas file asli
$im_src = imagecreatefromjpeg($file_name);
$src_width = imageSX($im_src);
$src_height = imageSY($im_src);

//set ukuran gambar hasil perubahan
$dst_width = 100;
$dst_height = $dst_width;
//set persentase gambar yg ingin diambil
$prsn = 60;

//proses perubahan ukuran
$im = imagecreatetruecolor($dst_width,$dst_height);
if($src_width > $src_height)
imagecopyresampled($im,$im_src,0,0,round((($src_width-$src_height)/2)+

((((100-$prsn)/2)/100)*$src_height)),round((((100-$prsn)/2)/100)*$src_height),

$dst_width, $dst_height, ($prsn/100)*$src_height, ($prsn/100)*$src_height);
else
imagecopyresampled($im,$im_src,0,0,round((($src_height-$src_width)/2)+

((((100-$prsn)/2)/100)*$src_width)),round((((100-$prsn)/2)/100)*$src_width),

$dst_width, $dst_height, ($prsn/100)*$src_width, ($prsn/100)*$src_width);

//Simpan gambar
imagejpeg($im,$file_name . “_thumb.jpg”);

imagedestroy($im_src);
imagedestroy($im);
}
?>

4. Buat file html seperti di bawah ini dan simpan dengan nama

“upload_img.html” di direktori yg sama dengan folder “img”:

<html>
<head>
<title>Thumbnail</title>
</head>

<body>
<form enctype=”multipart/form-data” action=”create_thumb.php” method=”post”>
Upload gambar :<input name=”img” type=”file”>
<input type=”submit” value=”Ok”>
</form>
</body>
</html>
5. Coba upload sebuah gambar berformat JPEG dengan perintah tersebut.

Lihat pada direktori “img”, jika berhasil maka akan terbentuk 2 buah file

upload(1 gambar sebenarnya, 1 thumbnail).



Filed Under (PHP) by bayu on November-28-2007

Artikel ini bertujuan untuk membuat sebuah gambar JPEG yang di-upload menjadi 3 bentuk(kecil, sedang, dan ukuran sebenarnya). Diharapkan dapat mengurangi beban load halaman website yang mempunyai list konten bergambar seperti e-commerce.
Catatan * : Hanya untuk format gambar (JPG,JPEG)

Menu upload gambar yang disediakan oleh website-website yang ada pada saat ini kebanyakan gambar yang di-upload di-copy secara langsung ke server. Jadi gambar yang dihasilkan hanya satu buah saja yaitu gambar yang di-upload. Padahal, pada kenyataannya website seperti e-commerce pada umumnya melakukan preview gambar sampai sebanyak tiga kali, yaitu:
- Preview gambar untuk list semua konten dengan keterangan singkat
- Preview gambar untuk keterangan detail
- Preview gambar untuk ukuran sebenarnya(versi large)

Apabila gambar yang dimiliki hanya satu buah saja, jadi setiap preview tersebut memakai gambar yang sama, hanya saja di-resize oleh perintah html. Hal ini tentu saja membebani pengunjung website ketika membuka list konten yang seharusnya menggunakan gambar kecil, tetapi disuguhkan gambar dalam ukuran sebenarnya. Oleh sebab itu penulis mencoba menawarkan sebuah solusi untuk hal di atas. Ilustrasinya seperti berikut:
- Pengelola web mengupload sebuah gambar JPEG (versi large)
- Sistem mengupload gambar tersebut menjadi 3 versi : versi small(untuk preview semua list konten), versi medium(untuk preview keterangan detail), versi large(ukuran sebenarnya)

Jadi, setelah gambar diupload dan dibuat menjadi 3 bagian maka website akan menampilkan gambar dalam ukuran sebenarnya(bukan di-rezise oleh perintah html).

Langkah-langkah implementasi :

1. Pastikan pustaka GD sudah diaktifkan agar PHP dapat mendukung pembuatan grafis secara on the fly.
Caranya:
- buka file configurasi php(php.ini) dengan text editor.
- Cari ;extension=php_gd.dll
- Hilangkan tanda ; sehingga menjadi extension=php_gd.dll
2. Buat folder “img” pada direktori htdocs(untuk web server Apache) atau wwwroot(untuk web server IIS)
3. Buat file php seperti di bawah ini dan simpan dengan nama “upload_image.php” di direktori yg sama dengan folder “img”:

<?php
//Fungsi untuk meng-upload gambar
function UploadImage($img_name){
header("Content-type: image/jpeg");

//direktori gambar
$vdir_upload = "img/";
$vfile_upload = $vdir_upload . $img_name;

//Simpan gambar dalam ukuran sebenarnya
move_uploaded_file($_FILES["img"]["tmp_name"], $vfile_upload);

//identitas file asli
$im_src = imagecreatefromjpeg($vfile_upload);
$src_width = imageSX($im_src);
$src_height = imageSY($im_src);

//Simpan dalam versi small 110 pixel
//set ukuran gambar hasil perubahan
$dst_width = 110;
$dst_height = ($dst_width/$src_width)*$src_height;

//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
imagejpeg($im,$vdir_upload . "small_" . $img_name);

//Simpan dalam versi medium 320 pixel
//set ukuran gambar hasil perubahan
$dst_width = 320;
$dst_height = ($dst_width/$src_width)*$src_height;

//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
imagejpeg($im,$vdir_upload . "medium_" . $img_name);

imagedestroy($im_src);
imagedestroy($im);
}
//Upload Gambar
UploadImage($_FILES["img"]["name"]);
?>

4. Buat file html seperti di bawah ini dan simpan dengan nama “upload.html” di direktori yg sama dengan folder “img”:

<html>
<body>
<form method="post" action="upload_image.php" enctype="multipart/form-data">
Image (JPG/JPEG) <input name="img" type="file"/></td>
<input name="submit" type="submit" value="Upload" />
</body>
</html>

5. Coba upload sebuah gambar berformat JPEG dengan perintah tersebut.
Lihat pada direktori “img”, jika berhasil maka akan terbentuk 3 buah file upload.



Filed Under (PHP) by webmaster on June-17-2007

Written by gerson
Monday, 05 February 2007

Selama ini saya sudah cukup puas menggunakan Apache2 dengan metode prefork (apache2-mpm-prefork) digabung dengan modul PHP5 (libapache2-mod-php5). Sampai suatu saat web server saya kedut-kedutan kehabisan resource karena dikeroyok banyak user. Apache dan modul PHP banyak mengkonsumsi memori karena setiap request dihandle oleh satu proses sendiri.

Ketika saya googling, saya menemukan bahwa Apache2 dengan metode worker (apache2-mpm-worker) lebih efisien & hemat resources karena satu proses bisa menangani banyak request (multithreading). Tapi apa daya, ketika saya mencoba menginstall apache2-mpm-worker, si Ubuntu ngomel minta uninstall libapache2-mod-php5. Ternyata modul PHP5 tidak kompatibel, dia maunya cuma sama si apache2-mpm-prefork.

Saya googling lagi, dan ternyata saya harus pakai PHP dalam bentuk CGI. Hiiy saya dulu punya pengalaman buruk menggunakan PHP CGI, banyak error gitu deh. Tapi ternyata jaman sudah berubah, sekarang ada FCGI, yang lebih handal dalam soal menangani aplikasi CGI. Salah satu kelebihan FCGI adalah sudah multi-threading, jadi sekali lagi seperti si apache2-mpm-worker, lebih hemat resource. Lagipula Apache jadi lebih enteng, karena hanya menangani request halaman statis (html, gambar, css dan lain-lain). Semua request PHP ditangani oleh PHP sendiri.

Oke lah kalau begitu kita langsung saja mulai nginstallnya.

Instalasi Apache2 dan mod_fcgid
Pertama-tama kita install dulu Apache2 dan modul FCGI:
$ sudo apt-get install apache2-mpm-worker libapache2-mod-fcgid
Setelah itu kita harus menyalakan modul FCGI terlebih dahulu:
$ sudo a2enmod fcgid

Instalasi PHP5
Setelah itu install paket-paket PHP5. Dibawah ini adalah modul-modul standar, silahkan tentukan sendiri modul-modul yang diinginkan:
$ sudo apt-get install php5-cgi php5-curl php5-gd php5-ldap php5-mysql php5-mysqli php5-sqlite php5-xsl

Konfigurasi Apache
Edit file /etc/apache2/sites-available/default, lalu taruh teks dibawah ini di bagian sesudah ?NameVirtualHost? dan sebelum
:


AddHandler fcgid-script .php
FCGIWrapper /usr/lib/cgi-bin/php5 .php

Kemudian pada masing-masing lainnya, tambahkan opsi ExecCGI pada baris Options.
Contoh:
Options ExecCGI Indexes

Nah kalau sudah selesai semua, tinggal restart apache deh:
$ sudo /etc/init.d/apache2 force-reload

Silahkan ditest menggunakan phpinfo(). Selamat menikmati Apache+PHP yang lebih mantab!