«

»

Sep 17

Membuat galery dengan blob dan resize images di Mysql.

Sebelum masuk kegalery saya akan jelaskan lebih dahulu tentang blob.

Blob adalah type file pada mysql yang dapat digunakan untuk menyimpan file dalam database, atau jika di postgresql adalah  OID.

Disini akan saya bahas pada Mysql dahulu, waktu kedepan saya akan bahas di posgresql.

Pertama untuk uji coba kita buat database cek dahulu silahkan dapat melalui phpmyadmin atau sql dengan create database cek;

setelah itu kita buat tabel galery.

Create table galery(

id int auto_increment,

foto blob,

type varchar(50),

primary key(id)

);

Sebenarnya inti memasukkan file kedalam blob adalah mengarahkan alamat pada query sql atau istilah dalam postgre adalah import file.

Akan tetapi jika langsung seperti itu maka foto akan sangat besar dalam membuat database penuh.

Maka kita akan menggunakan gd galery dari php untuk meresize terlebih dahulu baru akan kita ambil ke database sehingga lebih meminimalkan tempat dalam database.

Setelah tabel terbentuk maka kita akan membuat form pengiriman, ingat form type data bukan form biasa karena jika form biasa maka file tidak akan terupload.

Contoh:

<?

echo “<form enctype=’multipart/form-data’ action=’aksi.php’ method=’post’ >”;

echo “Kirim foto <input type=’file’ name=’foto’>”;

echo “<br/><input type=’submit’ name=’Submit’ value=’Simpan’>”;

echo “</form>”;

?>

Untuk aksi.php kita akan memproses resize lalu kita tempatkan di folder tmp yang telah kita buat terlebih dahulu baru diambil kedalam database dan file foto yang yang di folder tmp akan otomatis kita hapus. Ok lihat skrip dibawah ini:

<?

$dbServer = ‘localhost’;

$dbDatabase = ‘cek’;

$dbUser = ‘root’;

$dbPass = ”;

$sConn = mysql_connect($dbServer, $dbUser, $dbPass)

or die(‘tidak bisa connect to database server’);

$dConn = mysql_select_db($dbDatabase, $sConn)

or die(‘Ora iso connect to database $dbDatabase’);

$pic = $_FILES[‘foto’][‘name’];

$type = $_FILES[‘foto’][‘type’];

$pic = stripslashes($pic);

$pic = str_replace(“‘”,””,$pic);

$gambar=’./temp/’.$pic;

$IMG_ROOT = “./temp”;

$fileName = explode(“.”,$_FILES[‘foto’][‘name’]);

$name = str_replace(‘ ‘, ‘_’, $fileName[0]);

switch ($type)

{

case “image/gif”:

$mime = “GIF Image”;

$y=”.gif”; break;

case “image/jpeg”:

case “image/pjpeg”:

$mime = “JPEG Image”;

$y=”.jpg”;break;

case “image/png”:

case “image/x-png”:

$mime = “PNG Image”;

$y=”.png”;break;

default:

$mime = “unknown”;

}

$wm=250;

$hws=250;

list($imagewidth,$imageheight)=getimagesize($_FILES[‘foto’][‘tmp_name’]);

$mw=$imagewidth;

$hw=$imageheight;

if ($imagewidth > $wm) {

$imageheight=round(($wm/$imagewidth)*$imageheight,0);

$imagewidth=$wm;

}

if ($imageheight >= $hws) {

$imagewidth=round(($hws/$imageheight)*$imagewidth,0);

$imageheight=$hws;

}

$cc=floor(($hws-$imageheight)/2);

$ch=floor(($wm-$imagewidth)/2);

$img_src=imagecreatetruecolor($imagewidth,$imageheight);

$red01=imagecolorallocate($img_src,48,0,0);

$red=imagecolorallocate($img_src,0,0,0);

$wred= imagecolorallocate($img_src,255,255,0);

$des_src=imagecreatefromjpeg($_FILES[‘foto’][‘tmp_name’]);

imagecopyresized($img_src,$des_src,0,0,0,0,$imagewidth,$imageheight,$mw,$hw);

class CaptchaSecurityImages {

function generateCode($characters) {

$possible = ‘2345678abcdefghijkmnopqrstuvwxyz’;

$code = ”;

$i = 0;

while ($i < $characters) {

$code .= substr($possible, mt_rand(0, strlen($possible)-1), 1);

$i++;

}

return $code;

}

function CaptchaSecurityImages($characters=’12’) {

$code = $this->generateCode($characters);

$_SESSION[‘code’] = $code;

}

}

$characters = isset($_GET[‘characters’]) ? $_GET[‘characters’] : ’12’;

$captcha = new captchasecurityimages($characters);

$img_name = $_SESSION[‘code’].”$y”;

//$img_name = “web_$name.jpg”;

@imagejpeg($img_src,”$IMG_ROOT/$img_name”);

@imagedestroy($img_src);

$gambar1= “$IMG_ROOT/$img_name”;

$gambar_size=filesize($gambar1);

$gambar = fopen($gambar1, “rb”);

$gambar = fread($gambar, $gambar_size);

$gambar = addslashes($gambar);

$update=”insert into galery values(”, ‘$gambar’,’$mime’ )”;

$hasil=mysql_query($update);

if($hasil)

{

unlink($gambar1);

echo”Terimakasih anda telah mengirim galery”;

}

?>

Silahkan mencoba dan pastikan chmod folder tmp 755.