Во-первых, небольшой обход HTTP
HTTP, по сути, является основным протоколом Интернета - используется для передачи гипертекста (веб-страниц), изображений и других носителей.С самого начала HTTP был спроектирован как без состояний - среди прочего это означает, что невозможно определить, принадлежит ли запрос изображения «странице» той или иной странице.
По сути, в HTTP есть два обходных пути, но ни один из них не является надежным на 100%: куки и заголовок Referer.
С помощью куки вы можете установить куки, когда пользователь заходит на вашу страницу, а затем проверить это при обслуживанииизображения.Это может привести к проблемам с параллелизмом при первом входе на страницу.
При Referer
браузер отправляет запрос на изображение, с которого загружается изображение.К сожалению, реферер может быть легко изменен или удален пользователем или программным обеспечением безопасности.
Что это значит для вас
Я предлагаю вам использовать поле Реферер - хотя оно не надежно на 100%большинство людей не будут возиться с этим, а те, кто беспокоится, могут преодолеть любую другую защиту.
Вам нужно будет обрабатывать изображения с помощью сценария (например, PHP).
http://example.com/img.php?id=12345 - псевдокод для чека, PHP для самого водяного знака:
check if the image with given ID exists, else throw a 404 and end
check the referer - if it matches your site, just readfile() the relevant image and exit
if we're here, referer is wrong - you'll need the watermark:
// PHP code from now on
$original = imagecreatefromjpeg($original_image_path);
$watermark = imagecreatefromjpeg($watermark_image_path);
imagecopymerge ( $original, $watermark, 0,0,0,0, $watermark_width, $watermark_height, $opacity);
header('Content-Type: image/jpeg');
imagejpeg($original);
exit;