[FreeWare] Водяной знак для (watermark)

Rodin

Постоялец
Регистрация
27 Апр 2007
Сообщения
229
Реакции
169
С помощью данного скрипта, вы сможете накладывать собственное изображение (watermark) на ваш скриншот. Скрипт был адаптирован для Каталога файлов, но изменить его для другого модуля - не проблема.

Для начала в модуле Каталог файлов активируем след.поля

Web-site автора материала
Ссылка на источник материала

На страницу добавления/редактирования материала каталога файлов, после $BODY$:

HTML:
<script type="text/javascript">  
  site = 'http://'+location.href.split('/')[2]; // получаем ссылку на сайт  
  idname = 'ldF15'; // поле для вставки полученной ссылки на скриншот  
  idname2 = 'ldM46';  
  $('#ldM47').text('Ссылка на скриншот:');  
  </script>  
  <script type="text/javascript" src="http://uweb.su/js/u_watermark.js"></script>  
  <div style="display:none;" id="resImg"></div>  
  <style type="text/css">  
  #buttonload{background:#f1f1f1;padding:3px;border:1px solid #c1bfbf;margin-left:7px;color:#4f4d4d;}  
  </style>

 
Запрашиваемый файл не найден
File not found
Перезалейте ссылку!
 
а не подскажете хороший плагин watermark для Wordpress?
 
Вот интересная тема про водяные знаки
Скрытое содержимое доступно для зарегистрированных пользователей!
 
По мне, для уникализации картинки лучше всего использовать php библиотеку imagemagick и очень важно поворачивать фотографию от 10 до 15 градусов и обрезать если важно получить большой процент уникальности.
 
очень важно поворачивать фотографию от 10 до 15 градусов и обрезать если важно получить большой процент уникальности.
а с чего вы взяли что поворот на Х градусов делает картинку уникальной?
Для просмотра ссылки Войди или Зарегистрируйся попробуйте загрузить сюда популярную картинку, и увидете ее на разных ресурсах с измененными цветами, поворотом на Х градусов, зум, яркость и т.п.
 
Как-то давно искал, но потом забыл про него, и о чюдо, нашел здесь, даже не думал то, что найду здесь что-то для ucoz =)
 
Рабочий вариант для любых сайтов на php, работает 100%

Создаем в корневой директории папку watermark. В ней 3 файла:

watermark.php
Код:
<?php

// Путь до файла с оригинальным изображением
$path = $_SERVER['DOCUMENT_ROOT'].$_SERVER['REQUEST_URI'];
$nameImage = end(explode('/', $_SERVER['REQUEST_URI'])); // Имя изображения
$nameImageId = md5($path) . $nameImage;

// Проверяем дату для рефреша кеша
$dateImage = filemtime($path);
$dateImageCache = @filemtime($_SERVER['DOCUMENT_ROOT'] . "/watermark/cache/" . $nameImageId);

//Устанавливаем качество (вес) картинки на выходе
$quality = 100;

if(file_exists('cache/' . $nameImageId) && $dateImage < $dateImageCache)
{
    $image = imagecreatefromstring(file_get_contents('cache/' . $nameImageId));
    header('Content-type: image/jpeg');
    imagejpeg($image, NULL, $quality);
    exit();
}
else // Если же нет такой картинки в кэше
{
    // Загружаем оригинальное изображение
    $image = imagecreatefromstring(file_get_contents($path));
   
    // Получаем ширину и высоту оригинально изображения
    $w = imagesx($image);
    $h = imagesy($image);

    // Загружаем изображение с водяным знаком
    $watermark = imagecreatefrompng('watermark.png');

    //Вместо 200 можете поставить свое значение, это размер для маленьких фото для них будет использоваться маленький ватермарк
    if($w == 200)
    {
        $watermark = imagecreatefrompng('watermark_m.png');
    }

    // Получаем ширину и высоту водяного знака
    $ww = imagesx($watermark);
    $wh = imagesy($watermark);
   
    // Соединяем оригинальное изображение и водяной знак.(водяной знак будет расположен в центре изображения).
    imagecopy($image, $watermark, (($w/2)-($ww/2)), (($h/2)-($wh/2)), 0, 0, $ww, $wh);
   
    imagealphablending($image, false);
    imagesavealpha($image, true); // Устанавливаем прозрачность для png файла

    //Изменив значение 100, вы можете снизить качество получаемого фото
    imagejpeg($image, 'cache/' . $nameImageId, $quality);
    header('Content-type: image/jpeg');
    imagejpeg($image, NULL, $quality);
    exit();
}
?>

и две png картинки с самим водяным знаком, одна для наложения на большие изображения - watermark.png, другая на миниатюры - watermark_m.png (у меня они соответственно размером 301х100 и 100х33 пикселей)

в директорию, содержащую картинки, на которые хотим накладывать водяной знак, кладем

.htaccess
Код:
<IfModule mod_access.c>
Order allow,deny
Allow from all
</IfModule>

DirectoryIndex index.php

<FilesMatch "\.(gif|jpg|jpeg|png|JPG)$">
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -f
# Внимание! Путь к файлу watermark.php, вставте свой вместо папки watermark.
RewriteRule \.(gif|jpeg|jpg|png|JPG)$ /watermark/watermark.php [T=application/x-httpd-php,L,QSA]
</FilesMatch>

В папке watermark создаем папку cache.
В этом, пожалуй, самое главное отличие этого скрипта от аналогичных. Он создает в кэше изображения с уже наложенным водяным знаком и в момент обращения к картинке отдает уже сгенерированую из папки cache, тем самым не накладывая watermark на лету и не нагружая сервер.

Положение водяного знака относительно картинки можно менять:
Код:
// Справа сверху
imagecopy($image, $watermark, $w-$ww, 0, 0, 0, $ww, $wh);

// В центре слева
imagecopy($image, $watermark, 0, (($h/2)-($wh/2)), 0, 0, $ww, $wh);

// В центре
imagecopy($image, $watermark, (($w/2)-($ww/2)), (($h/2)-($wh/2)), 0, 0, $ww, $wh);

// В центре справа
imagecopy($image, $watermark, $w-$ww, (($h/2)-($wh/2)), 0, 0, $ww, $wh);

// Снизу слева
imagecopy($image, $watermark, 0, $h-$wh, 0, 0, $ww, $wh);

// Снизу в центре
imagecopy($image, $watermark, (($w/2)-($ww/2)), (($h)-($wh)), 0, 0, $ww, $wh);

// Снизу справа
imagecopy($image, $watermark, $w-$ww, $h-$wh, 0, 0, $ww, $wh);
 
Последнее редактирование:
Назад
Сверху