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