Pagi gan , dapat ilmu baru nih dari jagocoding, yaitu cara Membuat Simple Watermarking Gambar dengan PHP, yang akan saya bagikan di blog saya ini :)
watermark pada gambar yang akan kita upload ke sistem / server. dengan 3 langkah mudah sekali.
Berikut Langkahnya :
- 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.
Buatlah direktory pekerjaan anda. dan buatlah 3 file berikut
- index.php (form)
- proses.php (koding proses)
- watermark.png (gambar watermark)
index.php
<title>Simple Watermarking Gambar dengan PHP</title>
<center><h1>Simple Watermarking Gambar dengan PHP | www.idiot-attacker.com</h1></center>
<form action="proses.php" method="POST" enctype="multipart/form-data">
<input type="file" name="foto"/>
<input type="submit" name="proses" value="Proses"/>
</form>
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 yaitu
- $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 = 1300;
$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 = 1300; 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'<img src="'.$direktori.$namaBaru.$proses['ext'].'"/>';
}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
<?php
function watermark_image($path,$new_image_name,$image_show,$file){
$image_path = $image_show;
move_uploaded_file($_FILES[''.$file.'']['tmp_name'], $path.$_FILES[''.$file.'']['name']);
$oldimage_name=$path.$_FILES[''.$file.'']['name'];
list($owidth,$oheight) = getimagesize($oldimage_name);
$width = 1300;
$height = ($width/$owidth)*$oheight;
$im = imagecreatetruecolor($width, $height);
$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';
}
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);
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'<img src="'.$direktori.$namaBaru.$proses['ext'].'"/>';
}else{
echo'gagal';
}
}
}
?>
Berikut screenshort nya:
Prosesnya
Berikut hasil watermarks nya |
mudah bukan? memangsih penjelasannya bertele-tele,tapi percaya deh kalo
kamu paham,kamu bisa membuat yang magic lagi dengan fungsi fungsi
diatas. Selamat Mencoba
Tag: cara membuat watermarks dengan php, simpel watermarks, cara mudah membuat watermarks, belajar membuat watermarks, belajar php, step by step belajar php, php
0 Komentar