Watermarks as a first-line content protection asset is required for almost any celling or commercial website. Most simple solution for this is the use of a watermark adding function for all image uploads. Watermarks, however, are often required for websited already having tens or hundreds uploads. In such cases you can use simple yet effective PHP/Apache solution.
First off you need to create a watermark, say PNG-24 watermark.png and place it in the website root folder.
Second off, create watermark.php file with the following contents:
<?php // Insert watermarks on the fly // Requested file path $path = $_GET['path']; $realpath = realpath('../../../'.$path); // Check path and extension if (strpos($realpath, $_SERVER['DOCUMENT_ROOT']) === FALSE || !preg_match('#\.(gif|jpeg|jpg|png)$#i', $path)) { header('HTTP/1.1 403 Forbidden'); echo '<h1>Forbidden</h1>'; exit; } // Load the image $image = imagecreatefromstring(file_get_contents($realpath)); $w = imagesx($image); $h = imagesy($image); // Load the watermark $watermark = imagecreatefrompng('watermark.png'); $ww = imagesx($watermark); $wh = imagesy($watermark); // Insert watermark to the right bottom corner imagecopy($image, $watermark, $w-$ww, $h-$wh, 0, 0, $ww, $wh); // ... or to the image center // imagecopy($image, $watermark, (($w/2)-($ww/2)), (($h/2)-($wh/2)), 0, 0, $ww, $wh); // Send the image header('Content-type: image/jpeg'); imagejpeg($image,null,95); exit(); ?>
Last thing to do is adding rewrite rule for images:
RewriteCond %{REQUEST_FILENAME} -f RewriteRule ^datas/photos/page_([0-9]+)\.(gif|jpeg|jpg|png)$ watermark.php [QSA,NC]
This rule would add watermarks to all images placed in the datas/photos/ folder and complying with the specified mask.
For the servers that do not support mod_rewrite you can use Watermark plugin by Trustmaster.
Hello, thanks for sharing.
When i use this, i get always the forbiden message
In my case i have my path is
/home/aferreir/public_html/demo/uploaded_files/classified_img/ is the images folder
the watermak.php file is at
/home/aferreir/public_html/demo/watermark.php
$path
=
$_GET
[
'path'
]; at path i must insert
'uploaded_files/classified_img/'
$realpath
=
realpath
(
'../../../'
.
$path
);
at realpath i must insert
'/home/aferreir/public_html/demo/
'