Simple Watermarking Gambar dengan PHP Oleh: Agung Sucipto
Assalamualaikum sahabat JagoCoding.com, Mash tahan ya puasanya? oke pada siang ramadhan ini saya mau share lagi dengan tips & trik simple mengenai pengolahan gambar di PHP. kali ini saya akan menulis tutorial untuk membuat watermark pada gambar yang akan kita upliad ke sistem / server. dengan 3 langkah mudah se...
Assalamualaikum sahabat JagoCoding.com, Mash tahan ya puasanya? oke pada siang ramadhan ini saya mau share lagi dengan tips & trik simple mengenai pengolahan gambar di PHP. kali ini saya akan menulis tutorial untuk membuat watermark pada gambar yang akan kita upliad ke sistem / server. dengan 3 langkah mudah sekali. Berikut Langkahnya : 1. 2. 3. 4.
SIapkan Form Untuk Upload Gambar Siapkan File Untuk Upload Foto Kemudian Fungsi Untuk Watermark Eh satu lagi ketinggalan, jangan lupa dengan gambar yang akan djadikan untuk watermark.
Sebelum itu saya akan menjelaskan detail baris perbaris koding yang akan kta gunakan. yuk mari disimak :) Buatlah direktory pekerjaan anda, misalnya UploadWatermark/ UploadWatermark/ --upload/
--index.php (form) --proses.php (koding proses) --watermark.png (gambar watermark)
index.php
Penjelasan :
action pada form ditujukan pada file proses.php , sehingga data POST yang dikirim melalu form ditujukan ke file proses.php, dengan menggunakan method POST dan enctype="multipart/form-data" sangat wajib digunakan jika hendak mengirim file melalui form. Oke diform tersebut kita membuat sebuah inputan dengan type file dan name adalah foto dan membuat tombol submit dengan nama proses. Ingat !!! name pada inputan berfungsi untuk mengambil data melalui fungsi PHP, jika berupa text dengan meethod POST dapat diambil dengan $_POST['name'] jika file dapat diambil dengan $_FILES['name_inputan']['name'] setelah memiliki form kita akan lanjut untuk proses pada file proses.php proses.php untuk fungsi watermarking function watermark_image($path,$new_image_name,$image_show,$file){ ... } pada proses.php terdapat sebuah fungsi dengan nama watermar_image dengan4 parameter input yatu ●
● ● ●
$path = menampung direktory tempat untuk menguload file dan menyimpan hasil pengolahan watermark $new_image_name = menampung nama baru yg dicustom untuk file $Image_show = merupakan file watermark $file = merupakan name dari inputan FILES $image_path = $image_show; move_uploaded_file($_FILES[''.$file.'']['tmp_name'], $path.$_FILES[''.$file.'']['name']); $oldimage_name=$path.$_FILES[''.$file.'']['name'];
$image_path menampung file watermark fungsi move_upload_file() digunakan untuk mengupload gambar original ke folder yg sudah dtentukan $oldimage_name= menampung nama file asli yang belum dimodifikasi list($owidth,$oheight) = getimagesize($oldimage_name); $width = 300; $height = ($width/$owidth)*$oheight; $im = imagecreatetruecolor($width, $height); $bgcolor = imagecolorallocate($im,255,255,255); imagefill($im, 0, 0, $bgcolor);
fungsi getimagesize() dgunakan untuk mengambil seluruh informasi menganai gambar yang telah diupload tadi, namun saat ini hanya dibutuhkan width dan height asli dari gambar tersebut, untuk itu hasil fungsi getimageseize() dimasukkan dalam list($owidth,oheight); $width = 300; merupakan ukuran lebar yang akan kita tetapkan pada gambar yang akan di watermarking, terserah kita masih bsa dicostum sesuka hati. $height = ($width/$owidth)*$oheight; untuk mendapatkan tinggi yang proporsional dengan lebar maka dilakukan perhitungan (lebar custom/ lebar asli )*tinggi asli. kemudian membuat komposisi gambar baru dengan dimensi yang baru yang telah ditetapkan dengan menjalankan fungsi $im = imagecreatetruecolor($width, $height); kemudian memberi warna dasar gambar dengan warna putih $bgcolor = imagecolorallocate($im,255,255,255); imagefill($im, 0, 0, $bgcolor); $info = getimagesize($oldimage_name); if ($info['mime'] == 'image/jpeg'){ $image = imagecreatefromjpeg($oldimage_name); $ext='.jpg'; } elseif($info['mime'] == 'image/gif'){ $image = imagecreatefromgif($oldimage_name); $ext='.gif'; }elseif($info['mime'] == 'image/png'){ $image = imagecreatefrompng($oldimage_name); $ext='.png'; } setelah membuat dmensi dan background gambar, maka saatnya untuk membuat gambar baru pada memory, jika jpeg maka gunakan imagecreatefromjepg, jka gi maka gunakan imagecreatefromgif, jika png maka imagecreatefrompng. imagecopyresampled($im, $image, 0, 0, 0, 0, $width, $height, $owidth, $oheight); $watermark = imagecreatefrompng($image_path); list($w_width, $w_height) = getimagesize($image_path); $pos_x = $width - $w_width; $pos_y = $height - $w_height; imagecopy($im, $watermark, $pos_x, $pos_y, 0, 0, $w_width, $w_height);
setelah itu maka akan membuat gambar baru dengan membuat salinan dari gambar yg kita upload ke gambar yang telahkita custom ukurannya, dengan menjalankan fungsi imagecopyresampled. jadlah gambar baru dengan ukuran yang telah kita tentukan, kemudian kita akan membuat gambar baru untuk di memory yaitu gambar dari watermarknya : $watermark = imagecreatefrompng($image_path); kemudian mengambil ukuran dimensi dari watermark, tujuannya untuk mendapatkan posisi X dan Y yang dinamis sesua dengan gambar yang diupload. setelah itu maka dibuatlah gambar yang telah terwatermark kedalam memory.
if(imagejpeg($im, $path.$new_image_name.$ext, 100)){ $data['status']=true; }else{ $data['status']=false; } imagedestroy($im); unlink($oldimage_name); $data['ext']=$ext; return $data; .selenjutnya barulah dari gambar dimemory dibuat kedalam bentuk file gambar. setelah selesai membuat file maka sebaiknya menghapus gambar dari memory dengan fungsi imagedestroy() dan melakukan penghapusan pada file yang kita upload tadi.
kemudian untuk menjalankan fungsi tersebut pada file proses.php terdapat sedikit perintah untuk menjalankan: if($_POST['proses']){ $file=$_FILES['foto']['name']; if(!empty($file)){ $direktori="upload/"; //tempat upload foto $watermark="watermark.png"; //tempat upload foto $name='foto'; //name pada input type file $namaBaru='upload'.date('Y-m-d H-i-s'); //name pada input type file //jalankan fungsi $proses=watermark_image($direktori,$namaBaru,$watermark,$name); if($proses['status']==true){ echo'
'; }else{ echo'gagal';
} } } Artinya pada script diatas akan bekerja ketika tombol submit dikirim melalui request POST, kemudian akan menjalankan fungsi watermark_image() jika nama file tidak kosong.,dan pada script ini kta mendefinisikan inputan untuk fungsi watrmark_image(), yaitu : ● ● ● ●
$direktori merupakan folder dimana file akandiupload dan diproses $waternark adalah nama file dari file watermark $name adalah nama dari inputan file $namaBaru adalah nama random untuk file
proses.php
imagecopy($im, $watermark, $pos_x, $pos_y, 0, 0, $w_width, $w_height); if(imagejpeg($im, $path.$new_image_name.$ext, 100)){ $data['status']=true; }else{ $data['status']=false; } imagedestroy($im); unlink($oldimage_name); $data['ext']=$ext; return $data; } if($_POST['proses']){ $file=$_FILES['foto']['name']; if(!empty($file)){ $direktori="upload/"; //tempat upload foto $watermark="watermark.png"; //tempat upload foto $name='foto'; //name pada input type file $namaBaru='upload'.date('Y-m-d H-i-s'); //name pada input type file //jalankan fungsi $proses=watermark_image($direktori,$namaBaru,$watermark,$name); if($proses['status']==true){ echo'
'; }else{ echo'gagal'; } } } ?> mudah bukan? memangsih penjelasannya bertele-tele,tapi percaya deh kalo kamu paham,kamu bisa membuat yang magic lagi dengan fungsi fungsi diatas. Selamat Mencoba :)
Tentang Penulis Agung Sucipto Saya adalah alumni UIN SUSKA RIAU yang sangat gemar dan akrab sekali dengan web programming, bisa dikatakan walau koding itu rumit, tapi itulah passion saya