Watermark images using php


<?php 

// this script creates a watermarked image from an image file – can be a .jpg .gif or .png file 

// where watermark.gif is a mostly transparent gif image with the watermark – goes in the same directory as this script 

// where this script is named watermark.php 

// call this script with an image tag 

// <img src=”watermark.php?path=imagepath”> where path is a relative path such as subdirectory/image.jpg 

$imagesource =  $_GET[‘path’]; 

$filetype = substr($imagesource,strlen($imagesource)-4,4); 

$filetype = strtolower($filetype); 

if($filetype == “.gif”)  $image = @imagecreatefromgif($imagesource);  

if($filetype == “.jpg”)  $image = @imagecreatefromjpeg($imagesource);  

if($filetype == “.png”)  $image = @imagecreatefrompng($imagesource);  

if (!$image) die(); 

$watermark = @imagecreatefromgif(‘watermark.gif’); 

$imagewidth = imagesx($image); 

$imageheight = imagesy($image);  

$watermarkwidth =  imagesx($watermark); 

$watermarkheight =  imagesy($watermark); 

$startwidth = (($imagewidth – $watermarkwidth)/2); 

$startheight = (($imageheight – $watermarkheight)/2); 

imagecopy($image, $watermark,  $startwidth, $startheight, 0, 0, $watermarkwidth, $watermarkheight); 

imagejpeg($image); 

imagedestroy($image); 

imagedestroy($watermark); 

?>

The script centers the watermark, but can easily be modified to place it along any edge if you would prefer a different location.   For example removing the “/2” in the $startwidth and $startheight variable calculations will put the watermark in the lower right corner. 

You can then make the original images inaccessible if you put the following lines in a .htaccess file in the directory with the images: 

RewriteEngine On
RewriteCond %{REQUEST_URI} !error.gif$
RewriteRule .(gif|jpg|png)$ /error.gif [L] 

This will redirect any attempt to directly access an image in that directory to the error image specified.   Note that the error image is specified on two lines in the .htaccess file.   The first line allows the error image to bypass the rewrite.