Как се слага воден знак.
Публикувана от ko6rata на January 19 2011 10:40:39

Разширена новина
Този път ще Ви покажа, как можете бързо и лесно да сложите воден знак на картинките във вашата PHP галерия. Методиката е проста, начини има разни и разнообразни, но днес ще ви покажа как можете да сложите воден знак на файл, без да променяте оригинала!

1. Създайте си файл със някакво име, например "img.php".


2. Да предположим, че имате MySQL база данни с id-та на снимките и съответно имената на файловете.


3. Ето примерен код:

//тук си сложете MySQL глупости, които да сложат името на файла в $img
//водния знак ни е във файл "mark.png" от тип !!!PNG!!! и е в променлива $cop
header("Content-type: image/jpg"); //подменяме HEADER-ите за да знае браузъра, че това, което ще дойде от този файл е картинка, а не text/html. Това е MIME Type (питайте Google, за повече инфо)
$image = ImageCreateFromJPEG($img); //създаваме променлива, която носи съдържанието на картинката ни
$mark = ImageCreateFromPNG($cop); // създаваме променлива, която носи съдържанието на водния знак
$image_dim_x = ImagesX($image); //измерваме ширината на картинката
$image_dim_y = ImagesY($image); //измерваме височината на картинката
$mark_dim_x = ImagesX($copyright); //измерваме ширината на водния знак
$mark_dim_y = ImagesY($copyright); //измерваме височината на водния знак
$where_x = ($image_dim_x - $copyright_dim_x) / 2; //ще сложим водния знак по средата
$where_y = $image_dim_y - $copyright_dim_y; //на височина ще е точно на дъното на картинката
ImageCopy ($image, $mark, $where_x, $where_y, 0, 0, $mark_dim_x, $mark_dim_y); //сливаме картинката и водния знак
ImageJPEG($image); //извежда се новото съдържание на картинката
ImageDestroy($image); //изчистване на буфера
ImageDestroy($copyright); //и пак...

4. И така... вече подменете src на картинките с img.php?id=123 примерно...


5. Ето още една малка идейка... можете да направите така, че при всяко зареждане на картинка, тя да има различен воден знак, избран произволно от няколко възможни! Яко нали?

Просто си създайте няколко водни знака, имената на които да се различават само по една цифра накрая, и когато залагате $cop направете нещо подобно:

$cop = "mark".rand(1,5).".jpg"; //избираме между mark1.png, mark2.png, mark3.png, mark4.png и mark5.png

6. Донагласете си нещата, че да проработи и внимавайте с правата над файловете, за да може img.php да работи с тях!

Дано съм бил полезен с този урок!