Htaccess и водяной знак - PullRequest
       45

Htaccess и водяной знак

4 голосов
/ 28 января 2012

Я хочу знать, возможно ли защитить изображения на моем хосте, загруженные извне, добавив водяной знак, используя .htaccess?

То есть, если другой сайт использует URL моего изображения http://example.com/1.jpg в теге img на своих сайтах.

План заключается в том, что когда иностранный запрос приходит к моему хосту, я добавляю к нему водяной знак и отправляю его пользователю, просматривающему иностранный сайт.

Ответы [ 3 ]

2 голосов
/ 28 января 2012

То, что вы в основном хотите сделать, это начать с этого урока:

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

Здесь показано, как перенаправить изображения, которые приходят с внешних сайтов, на страницу PHP. Затем вы можете использовать эту страницу PHP, чтобы сделать водяные знаки на вашем изображении примерно так:

<?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);
?>
1 голос
/ 28 января 2012

.htaccess не может добавлять водяные знаки к вашим изображениям.Однако это может ограничить доступ к вашим изображениям.

Однако вы можете добавить водяные знаки, используя PHP GD Library .Приведенный ниже код показывает вам, как добавить водяной знак к вашему изображению через 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 - это контент, которым вы хотите быть на водяном знаке (например: Авторские права защищены), а $ im - ваш фактическийизображение, которое должно быть защищено.

0 голосов
/ 04 марта 2014

вы должны использовать HTTP_REFERER, чтобы определить, пришел ли пользователь по какой ссылке, а затем сравнить его с вашим собственным доменом. если домен запроса был другим, используйте php gd lib, чтобы добавить водяные знаки на ваши изображения. Вы должны проверить, установлен ли HTTP_REFERER или нет. по умолчанию, если пользователь не зашел с другой страницы на ваш сайт и зашел напрямую, он будет пуст и не задан.

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