Skrypt dodający automatycznie znak wodny do grafiki na stronie

Ostatnio borykałem się z dosyć dotkliwym problemem z kradnięciem moich zdjęć z jednego ze swoich serwisów. Myślałem o zablokowaniu hotlinkowania, ale większość gotowych rozwiązań opiera się o regułki .htaccess, które mi nigdy nie działały (nie wiem czemu). Dlatego postanowiłem wdrążyć całkiem inne rozwiązanie, polegające na automatycznym dodawaniu znaku wodnego z logiem strony do każdego zdjęcia, co w efekcie zniechęca wielu amatorów kopiowania czyjejś grafiki, a dodatkowo jest dodatkową reklamą dla strony w przypadku gdy ktoś z takiego zdjęcia skorzysta…. Trochę pogooglowałem i znalazłem prosty i skuteczny skrypt spełniający wszystkie moje wymagania, dlatego też postanowiłem się z wami podzielić i objaśnić proces jego wdrążenia, który jest banalnie prosty.

1. Edytujemy nasz plik .htaccess i dodajemy poniższą regółkę (przykład dla wordpress’a):

RewriteRule ^(.*)wp-content/uploads/(.*) $1watermark.php?src=wp-content/uploads/$2

wp-content/uploads/ – to ścieżka do grafiki w wordpressie, jeżeli korzystacie z innego skryptu to wystarczy że jedynie zmienicie ten kawałek kodu na ścieżkę dostępu waszego katalogu z grafiką.

2. Tworzycie teraz plik watermark.php w katalogu głównym waszej strony i wypełniacie go poniższym skryptem:

[/php]
<?php
$src = $_GET['src'];

header('Content-type: image/jpeg');

//this will prevent the watermark from showing up in the thumbnail images
if (eregi("150x150", $src)) {
	$watermark = imagecreatefrompng('empty.png');
} else {
	$watermark = imagecreatefrompng('watermark.png');
}
$watermark_width = imagesx($watermark);
$watermark_height = imagesy($watermark);
$image = imagecreatetruecolor($watermark_width, $watermark_height);
if(eregi('.gif',$src)) {
$image = imagecreatefromgif($src);
}
elseif(eregi('.jpeg',$src)||eregi('.jpg',$src)) {
$image = imagecreatefromjpeg($src);
}
elseif(eregi('.png',$src)) {
$image = imagecreatefrompng($src);
}
else {
exit("Your image is not a gif, jpeg or png image. Sorry.");
}
$size = getimagesize($src);
$dest_x = $size[0] - $watermark_width - 0;
$dest_y = $size[1] - $watermark_height - 0;
imagecolortransparent($watermark,imagecolorat($watermark,0,0));
imagecopyresampled($image, $watermark, $dest_x, $dest_y, 0, 0, $watermark_width, $watermark_height, $watermark_width, $watermark_height);

imagejpeg($image, "", 95);
imagedestroy($image);
imagedestroy($watermark);
?>
[php]

Zapisujecie plik i dodajecie w głównym katalogu jeszcze 2 pliki graficzne:
watermark.png – z waszym znakiem wodnym
empty.png – obrazek o rozmiarach 1×1px

Możecie też pobrać cały gotowy skrypt wraz z przykładową grafiką: TUTAJ

Autor skryptu

  1. avatar DarkGL Says:

    ale czy mam zmienić obydwie ścieżki w
    RewriteRule ^(.*)wp-content/uploads/(.*) $1watermark.php?src=wp-content/uploads/$2

  2. avatar Adrian Says:

    Nic nie zmieniasz, tylko dodajesz tą linijkę.

  3. avatar DarkGL Says:

    nie o to chodzi po prostu grafikę mam w folderze images w głównym katalogu i nie wiem którą ścieżkę zmienić

  4. avatar Adrian Says:

    Zmieniasz ścieżkę w regułce mod_rewrite:

    RewriteRule ^(.*)images/(.*) $1watermark.php?src=images/$2

    Powinno działać.

  5. avatar rk Says:

    a u mnie nie działa…. nie korzystam z wordpress tylko z samego katalogu z obrazkami… ktoś może pomóc?

  6. avatar admin Says:

    Rzuć więcej informacji, w czym dokładnie masz problem, jakie błędy wyskakują itd.

  7. avatar VanD Says:

    lol a mnie zniknely wszystkie obrazki :)
    zmienilem wszystko tak jak napisales..

  8. avatar VanD Says:

    w dodatku jak sprawdzam wlasciwosci obrazka na stronie to wyswietla prawidlowa sciezke do obrazka ale wymiary obrazka to 0×0 lol

  9. avatar VanD Says:

    dobra juz dziala :) jak kopiowalem kod pliku watermark.php skopiowaly mi sie numery linijek :D haha :) do tego zmienilem sobie pozycje mojego watermarka zmieniajac

    $dest_y = $size[1] – $watermark_height – 0;

    na

    $dest_y = $size[1] – $watermark_height – 80;

    dzieki wielkie :)

  10. avatar Paweł Says:

    Dzięki za skrypt! Działa jak należy :)
    PS. Proszę o kanał RSS na bloga, zapisałbym sobie.

  11. avatar Paweł Says:

    Widzę że ze strony głównej RSS dostępny. Zapisany :)

  12. avatar Paweł Says:

    Witam,
    Mam problem z watermarkiem, bowiem nie pojawia się w załączniku obrazka (po kliknięciu na miniaturkę przenosi na podstronę z grafiką).
    Co jest przyczyną i jak to rozwiązać?

Kanał RSS z komentarzami do tego wpisu. Adres URL dla TrackBacków

Dodaj komentarz