PHP: How To Create Copyright Watermark On Your Images

This is happen 3 days ago when my friend asking for converting him .htaccess into lighttpd rewrite rules format. After conversion done he wanted to share this script to everyone. If you’re professional Fotographer or just blogger, you may wanted to copyright all your photos/images. Even we know, sometimes people like to share for having fun…. but some people need a copyright to protected his original works before someone copy it. If you’re doing this manually it will take a long time and of course you will bored before this done. In short time we can make a simple watermark to protected our images.


  1. Apache with mod_rewrite / lighttpd (just convert rewrite rules, it should work)
  2. PHP with GD library (check in your phpconfig or asking your webhosting)

Step one.

Prepare one images that you should used as watermark.Â? This images should be in .PNG format, you can created one using photoshop software to make transparant effect.

Step two.

Make new or open your .htaccess files and write down this code inside it:

RewriteEngine On
RewriteRule ^(.+)\.jpg$ wrapper.php?image=$1\.jpg [L]
RewriteRule ^(.+)\.gif$ wrapper.php?image=$1\.gif [L]
RewriteRule ^(.+)\.png$ wrapper.php?image=$1\.png [L]
RewriteRule ^(.+)\.bmp$ wrapper.php?image=$1\.bmp [L]

For Lighttpd users try to using this conversion, if you meet any problem just following your path and symbol :

url.rewrite-once = (
“^\(.*).jpg” => “/wrapper.php?image=$1.jpg”,
“^\(.*).gif” => “/wrapper.php?image=$1.gif”,
“^\(.*).png” => “/wrapper.php?image=$1.png”,
“^\(.*).bmp” => “/wrapper.php?image=$1.bmp”

Step three.

Create wrapper.php files and put code below inside it:

$watermark = “watermark.png”;
$image = $_GET[“image”];

if (empty($image)) die();

if (!file_exists($image)) {
header(“404 Not Found”);
echo “File Not Found.”; die();

$outputType = getFileType($image);
watermark($image, $watermark, $outputType);

Outputs the image $source with $watermark in the lower right corner.
@param $source the source image
@param $watermark the watermark to apply
@param $outputType the type to output as (png, jpg, gif, etc.)
defaults to the image type of $source if left blank

function watermark($source, $watermark, $outputType=””) {
$sourceType = getFileType($source);
$watermarkType = getFileType($watermark);
if (empty($outputType)) $outputType = $sourceType;
if ($outputType == “gif”) $outputType = “png”;

$createSource = “ImageCreateFrom”.strtoupper($sourceType);
$showImage = “Image”.strtoupper($outputType);
$createWatermark = “ImageCreateFrom”.strtoupper($watermarkType);

// Load original and watermark to memory

$output = $createSource($source);
$logo = $createWatermark($watermark);
ImageAlphaBlending($output, true);

// Find proper coordinates so watermark will be in the lower right corner

$x = ImageSX($output) – ImageSX($logo);
$y = ImageSY($output) – ImageSY($logo);

// Display

ImageCopy($output, $logo, $x, $y, 0, 0, ImageSX($logo), ImageSY($logo));

// Purge


function getFileType($string) {
$type = strtolower(eregi_replace(“^(.*)\.”,””,$string));
if ($type == “jpg”) $type = “jpeg”;
return $type;

Or you can download in here.

Step Fourth.

Upload all of this files into your public_html folder (please note, all your images files will get affected, if you’re in shared hosting upload this 3 files into your root domain folder) watermark should work even you embed this images into .html I already try in this blog, it works watermark all direct images or embeding images in .html anyway I don’t like because it’s affected my other images in templates so I remove it. This will be nice script for wallpapers/photos website.

Done, Have a nice day! 🙂

Similar Posts:


5 thoughts on “PHP: How To Create Copyright Watermark On Your Images”

  1. Excellent code. Perhaps too slow when you have tons of pictures (prefer creating thumbs), but very interesting. Thanks.

  2. Great blog right here! Additionally your website rather a lot up very fast! What host are you the use of? Can I get your associate hyperlink for your host? I wish my website loaded up as fast as yours lol.

  3. Way cool! Some extremely valid points! I appreciate you writing this article
    and the rest of the website is also very good.

Leave a Reply

Your email address will not be published. Required fields are marked *

Time limit is exhausted. Please reload CAPTCHA.