Dodawanie znaku wodnego do zdjęcia w php

W celu dodania znaku wodnego wykorzystamy bibliotekę GD. Najpierw zapiszmy pod zmienną nasz bazowy obrazek (to na nim umieścimy znak wodny).

$photo = 'tatry_foto.jpg';
Następnie za pomocą funkcji imagecreatefromjpeg tworzymy odpowiednie zasoby obrazka i znaku wodnego.
$image = imagecreatefromjpeg($photo);
$watermark = imagecreatefromjpeg('watermark_dc.jpg');
Zapiszmy pod zmiennymi wysokości i szerokości obydwu obrazków.
$width = imagesx($image);
$height = imagesy($image);
$watermark_width = imagesx($watermark);
$watermark_height = imagesy($watermark);
Teraz czas na najważniejszą część czyli umieszczenie znaku wodnego na bazowym obrazku.
imagecopymerge($image, $watermark, (($width - $watermark_width))-10, (($height - $watermark_height))-10, 0, 0, $watermark_width, $watermark_height, 100);
Wykorzystujemy funkcję imagecopymerge. Przyjmuje ona następujące parametry: obrazek docelowy (bazowy), obrazek źródłowy (u nas obrazek znaku wodnego), docelowe x, docelowe y, źródłowe x, źródłowe y, szerokość obrazka źródłowego, wysokość obrazka źródłowego, przenikanie - od 0 do 100). Znak wodny umieściliśmy w prawym dolnym rogu, odsunięty o 10px od krawędzi. Na koniec wysyłamy odpowednie nagłówki, funkcją imagejpeg wyświetlamy zdjęcie i niszczymy zasoby obydwu obrazków.
header('Content-Type: image/jpeg');
imagejpeg($image);
imagedestroy($image);
imagedestroy($watermark);
Pełny kod przedstawia poniższy listing.
$photo = 'tatry_foto.jpg';

$image = imagecreatefromjpeg($photo);
$watermark = imagecreatefromjpeg('watermark_dc.jpg');

$width = imagesx($image);
$height = imagesy($image);
$watermark_width = imagesx($watermark);
$watermark_height = imagesy($watermark);
imagecopymerge($image, $watermark, (($width - $watermark_width))-10, (($height - $watermark_height))-10, 0, 0, $watermark_width, $watermark_height, 100);

header('Content-Type: image/jpeg');
imagejpeg($image);
imagedestroy($image);
imagedestroy($watermark);
Demo - znak wodny w php