Htaccess and watermark

I want to know if it is possible to protect images on my host that are downloaded externally by adding a watermark using .htaccess ?

That is, if another site uses my image URL http://example.com/1.jpg in the img tag on their own websites.

A plan is when an external request arrives at my host, I add a watermark to it and send it to a user viewing a foreign site.

+4
source share
3 answers

What you basically want to do begins with this tutorial:

http://www.alistapart.com/articles/hotlinking/

This shows you how to redirect images coming from external sites to a PHP page. Then you can use this PHP page to watermark your image:

 <?php header('content-type: image/jpeg'); $watermark = imagecreatefrompng('watermark.png'); $watermark_width = imagesx($watermark); $watermark_height = imagesy($watermark); $image = imagecreatetruecolor($watermark_width, $watermark_height); $image = imagecreatefromjpeg($_GET['pic']); $size = getimagesize($_GET['pic']); $dest_x = $size[0] - $watermark_width - 5; $dest_y = $size[1] - $watermark_height - 5; imagecopymerge($image, $watermark, $dest_x, $dest_y, 0, 0, $watermark_width, $watermark_height, 100); imagejpeg($image); imagedestroy($image); imagedestroy($watermark); ?> 
+2
source

.htaccess cannot add watermarks to your images. However, it may restrict access to your images.

However, you can add watermarks using the PHP GD Library . The code below shows how to add a watermark to your image through PHP GD.

 <?php // Load the stamp and the photo to apply the watermark to $stamp = imagecreatefrompng('stamp.png'); $im = imagecreatefromjpeg('photo.jpeg'); // Set the margins for the stamp and get the height/width of the stamp image $marge_right = 10; $marge_bottom = 10; $sx = imagesx($stamp); $sy = imagesy($stamp); // Copy the stamp image onto our photo using the margin offsets and the photo // width to calculate positioning of the stamp. imagecopy($im, $stamp, imagesx($im) - $sx - $marge_right, imagesy($im) - $sy - $marge_bottom, 0, 0, imagesx($stamp), imagesy($stamp)); // Output and free memory header('Content-type: image/png'); imagepng($im); imagedestroy($im); ?> 

$ stamp is what you want to see on the watermark (for example: Copyrights Reserved) and $ im is your actual image that needs to be protected.

+1
source

you must use HTTP_REFERER to determine if the user came from which link, and then compare it with your own domain. if the request domain was different, use php gd lib to add watermarks to the images. you should check if HTTP_REFERER is set or not. by default, if the user did not come from another page to your site and came directly, he will be empty and will not be installed.

 if(isset($_SERVER['HTTP_REFERER'])) { #check if its from external domin # do something here } 
0
source

Source: https://habr.com/ru/post/1393489/


All Articles