Bila anda memiliki website yang memberikan fasilitas untuk upload gambar maka Anda mungkin ingin menambahkan watermark di gambar yang diupload. Hal ini sering dilakukan untuk menghindari penggunaan gambar tanpa permisi. Watermark adalah gambar kecil diatas sebuah gambar yang menunjukan identitas dari gambar itu sendiri tetapi tidak mengganggu gambar utama.
Menambahkan watermark menggunakan PHP cukup sederhana. Pertama tentukan file watermark yang akan dipakai. Usahkan file ini dengan tinggi dan lebar yang sama. Berikut adalah langkah langkah untuk menambahkan watermark pada gambar, misalkan kita punya gambar example.jpg
.
Video Tutorial Membuat Watermark dengan PHP
Gunakan fungsi getimagesize untuk mendapatkan tipe, dan ukuran gambar seperti di bawah
<?php
$file = 'images/example2.jpg';
$watermarkFile = 'images/logo.png';
list ($width, $height, $type) = getimagesize($file);
Berdasarkan tipe gambar asli gunakan fungsi yang sesuai untuk membuat gambar baru, gunakan fungsi imagecreatefromjpeg jika tipe gambar adalah jpeg dan imagecreatefrompng jika png.
$destImage = null;
switch ($type) {
case IMAGETYPE_JPEG:
$destImage = imagecreatefromjpeg($file);
break;
case IMAGETYPE_PNG:
$destImage = imagecreatefrompng($file);
break;
default:
throw new Exception('Invalid image type');
}
Kembali gunakan fungsi getimagesize
untuk mengambil lebar dan tinggi watermark yang asli dan gunakan fungsi imagecreatefrompng
untuk membuat gambar watermark baru atau imagecreatefromjpeg
jika gambar watermark adalah jpeg. Kemudian tentukan tinggi dan lebar watermark. Di contoh di bawah tinggi dan lebarnya adalan 100.
list ($watermarkWidth, $watermarkHeight) = getimagesize($watermarkFile);
$watermarkImage = imagecreatefrompng($watermarkFile);
$newWatermarkWidth = 100;
$newWatermarkHeight = 100;
Kemudian gunakan fungsi imagecopyresampled untuk menaruh watermark di gambar asli, seperti contoh di bawah.
imagecopyresampled(
$destImage, $watermarkImage,
$width/2 - $newWatermarkWidth/2, $height/2 - $newWatermarkHeight/2, 0, 0,
$newWatermarkWidth, $newWatermarkHeight, $watermarkWidth, $watermarkHeight
);
Parameter pertama adalah gambar asli, yang kedua adalah watermarknya. Kemudian parameter 3 dan 4 adalah yang terpenting. Yaitu posisi x dan y dari watermark. Posisi 0,0 ada di pojok kiri atas. Contoh di atas adalah untuk menempatkan watermark di tengah tengah gambar. Untuk menaruhnya di pojok kanan bawah maka gunakan $width - $newWatermarkWidth, $height - $newWatermarkHeight
. Sedangkan parameter 5 dan 6 adalah posisi awal dari gambar watermark yang akan diambil, taruh 0,0 agar semua bagian gambar diambil. Kemudian parameter 7 dan 8 adalah ukuran dari watermark, dan 9, 10 adalah tinggi asli dari gambar watermark.
Selanjutnya kalian bisa menggunakan fungsi imagepng atau imagejpeg untuk menyimpan gambar. Jika digabungkan maka kode untuk menambahkan watermark di php seperti di bawah.
<?php
$file = 'images/example2.jpg';
$watermarkFile = 'images/logo.png';
list ($width, $height, $type) = getimagesize($file);
$destImage = null;
switch ($type) {
case IMAGETYPE_JPEG:
$destImage = imagecreatefromjpeg($file);
break;
case IMAGETYPE_PNG:
$destImage = imagecreatefrompng($file);
break;
default:
throw new Exception('Invalid image type');
}
list ($watermarkWidth, $watermarkHeight) = getimagesize($watermarkFile);
$watermarkImage = imagecreatefrompng($watermarkFile);
$newWatermarkWidth = 100;
$newWatermarkHeight = 100;
imagecopyresampled(
$destImage, $watermarkImage,
$width/2 - $newWatermarkWidth/2, $height/2 - $newWatermarkHeight/2, 0, 0,
$newWatermarkWidth, $newWatermarkHeight, $watermarkWidth, $watermarkHeight
);
imagepng($destImage, 'images/example-watermark.png');