Baza modelek Glamour Models: Modelki, Fotomodelki, Hostessy

niedziela, 4 grudnia 2011

Znak wodny na wszystkich obrazkach w katalogu

Cześć,
pokażę, jak dodać do zdjęć znak wodny, nie modyfikując i bez żadnych przeróbek wcześniejszego kodu.
Zakładamy, że zdjęcia znajdują się na serwerze w katalogu images.
Do tego katalogu wrzucamy obrazek ze znakiem wodnym najlepiej w formacie PNG, aby mieć wpływ na przeźroczystość. Niech się nazywa watermark.png.



Wrzucamy też plik watermark.php, który będzie nakładał znak wodny do zdjęć:
<?php
// ścieżka zdjęcia na serwerze:
$path = $_SERVER['DOCUMENT_ROOT'].$_SERVER['REQUEST_URI'];


// tworzy zdjęcie z załadowanego pliku:
$image = imagecreatefromstring(file_get_contents($path));


// pobiera wymiary zdjęcia:
$w = imagesx($image);
$h = imagesy($image);


// ładuje znak wodny i pobiera jego wymiary:
$watermark = imagecreatefrompng('watermark.png');
$ww = imagesx($watermark);
$wh = imagesy($watermark);


// nakłada znak wodny na obrazek w prawym dolnym rogu:
imagecopy($image, $watermark, $w-$ww, $h-$wh, 0, 0, $ww, $wh);


// Wysyła obrazek do przeglądarki w formacie JPG i jakości 90%:
header('Content-type: image/jpeg');
imagejpeg($image, null, 90);


// dla pewności:
exit();


Oczywiście należy uważać, aby białe znaki nie wkradły się do kodu. Najlepiej nie zamykać znacznika PHP.

Na koniec trzeba utworzyć plik .htaccess w katalogu images o zawartości:
# Włączamy mod_rewrite:
RewriteEngine On
# Jeśli przeglądarka wywołuje istniejący plik
RewriteCond %{REQUEST_FILENAME} -f
# i ma odpowiednie rozszerzenie, to przepuść ten plik przez skrypt:
RewriteRule \.(gif|jpeg|jpg|png)$ watermark.php


Łatwe?

2 komentarze:

  1. Jak to wrzuciłem to nie działa mi obrazek tzn go nie wyświetla demo
    http://playmods.pl/test/

    OdpowiedzUsuń
  2. Wszystko pięknie działa, zięki

    OdpowiedzUsuń