Skip to: Site menu | Main content

Life in PseudoReality

"Beloved, let us love one another: for love is of God; and every one that loveth is born of God and knoweth God ... Beloved, if God so loved us, we ought also to love one another, God dwelleth in us, and His love is perfected in us."
1 John 4:7, 11-12

melindungi hak cipta foto dengan watermark

tutorial berikut untuk memberikan efek watermark di semua image/foto yang di upload ke blog tanpa harus repot2 meng-edit satu persatu.

yang diperlukan:
- server apache dengan mod_rewrite (jelas harus bisa upload/edit file .htaccess)
- php dan gd library dengan png dan jpg support (standarnya sih udah paketan)
- kemampuan membaca artikel ini dengan jelas.

PENTING !
script berikut akan mempengaruhi tampilan semua foto/image didalam folder dan sub-folder, jadi sangat tidak disarankan untuk meletakkannya di root folder, karena akan berakibat juga terhadap image yang digunakan dalam template/skin.
jadi disarankan untuk meletakkan didalam folder dimana hanya terdapay foto/image yang akan di watermark (misal, di WP bisa menggunakan folder wp-content/uploads, dll).

Langkah 1
siapkan sebuah file image yang akan digunakan sebagai watermark. file ini harus dalam format .png, beri nama file watermark.png
untuk tampilan disarankan agar menggunakan file dengan efek transparan, jadi tidak menutupi terlalu banyak area dalam image/foto sesungguhnya.
ukuran-nya bisa bermacam-macam, tergantung selera. bisa memanjang vertikal atau horisontal, atau square logo. contohnya bisa diliat disini:
http://sammy.web.id/blog/watermark.png

posisi yang akan digunakan adalah pojok kanan bawah, jadi sesuaikan dengan panjang/lebar watermark.png.
perhatikan juga ukuran file yang digunakan, karena file ini akan diproses php script, pastikan tidak memberati waktu loading dengan ukuran yang berlebihan.
2-5 kb masih bisa ditolerir (rata2 gue cuma pake 1-1,5 kb).

Langkah 2
buat file .htaccess dengan content berikut:

.htaccess

# Redirect display of files to a PHP
RewriteEngine On
RewriteRule ^(.+)’.jpg$ wrapper.php?image=$1’.jpg [L]
RewriteRule ^(.+)’.gif$ wrapper.php?image=$1’.gif [L]
RewriteRule ^(.+)’.png$ wrapper.php?image=$1’.png [L]
RewriteRule ^(.+)’.bmp$ wrapper.php?image=$1’.bmp [L]

fungsi ini akan me-redirect (gue bingung terjemahannya) semua request untuk file2 seperti tertera (.jpg .gif .png .bmp) untuk terlebih dahulu diproses menggunakan file wrapper.php (dijelaskan di langkah 3)

Langkah 3
buat file wrapper.php dengan code berikut:

wrapper.php

<?php

$watermark = "watermark.png";
$image = $_GET["image"];

if (empty($image)) die();

if (!file_exists($image)) {
header("404 Not Found");
echo "File Not Found."; die();
}

$outputType = getFileType($image);

watermark($image, $watermark, $outputType);

/**
Outputs the image $source with $watermark in the lower right corner.
@param $source the source image
@param $watermark the watermark to apply
@param $outputType the type to output as (png, jpg, gif, etc.)
defaults to the image type of $source if left blank
*/
function watermark($source, $watermark, $outputType="") {
$sourceType = getFileType($source);
$watermarkType = getFileType($watermark);

if (empty($outputType)) $outputType = $sourceType;
if ($outputType == "gif") $outputType = "png"; // Okay to remove after July 2004
header("Content-type:image/$outputType");

// Derive function names
$createSource = "ImageCreateFrom".strtoupper($sourceType);
$showImage = "Image".strtoupper($outputType);
$createWatermark = "ImageCreateFrom".strtoupper($watermarkType);

// Load original and watermark to memory
$output = $createSource($source);
$logo = $createWatermark($watermark);
ImageAlphaBlending($output, true);

// Find proper coordinates so watermark will be in the lower right corner
$x = ImageSX($output) – ImageSX($logo);
$y = ImageSY($output) – ImageSY($logo);

// Display
ImageCopy($output, $logo, $x, $y, 0, 0, ImageSX($logo), ImageSY($logo));
$showImage($output);

// Purge
ImageDestroy($output);
ImageDestroy($logo);
}

function getFileType($string) {
$type = strtolower(eregi_replace("^(.*)’.","",$string));
if ($type == "jpg") $type = "jpeg";
return $type;
}

buat yang ga mau repot2, bisa download file-nya disini:
http://sammy.web.id/blog/content/wrapper.php.txt

jangan lupa untuk rename jadi wrapper.php

Langkah 4
upload ke-3 file tadi kedalam folder dimana terdapat file2 foto/image di hosting.
efek watermark akan berpengaruh juga terhadap file2 image/foto didalam sub-folder dimana script tadi diletakkan. jadi cukup di folder itu saja.

Selesai

Leave a Reply