0 Пользователей и 1 Гость просматривают эту тему.
  • 240 Ответов
  • 121407 Просмотров
*

Keno

  • Осваиваюсь на форуме
  • 84
  • 41
 Здравствуйте. Долго искал мамбот или на худой конец компонент c выводом watermark (водяных знаков) на изображение - но всё оказывалось не то, то компоненты слишком тяжелые (в плане запросов к БД) с многими не нужными мне функциями, то мамботы неподходящие, той же Multithumb, где водяные знаки выводятся только на выводе оригинального (большого) изображения и при копировании пользователями - водяных знаков не оставалось.
 Вот по блуждал немного по сети и нашел скрипт на PHP  - но скрипт у меня не хочет работать. Может какие-то конфликты с Joomla ?
 Собственно сам скрипт:
Код
<?php

#####################################################
# originally gleaned from
# http://www.fedeblog.com.ar/files/view.php?i=Watermark/watermark.php
# Modified by Liem Bahneman (liem@bahneman.com) with some
# path enhancements when called to handled subdirectories


#####################################################
# Okay to edit these

# what is the root of your files?
$basedir="/home/liem/public_html";
$watermarkimage="bd.png";

#####################################################
# end user modifiable stuff...

$file=basename($_GET['i']);
$path=($_GET['p']);

$image = $basedir."/".$path."/".$file;
$watermark = $basedir."/".$watermarkimage;

$im = imagecreatefrompng($watermark);

$ext = substr($image, -3);

if (strtolower($ext) == "gif") {
    if (!$im2 = imagecreatefromgif($image)) {
        echo "Error opening $image!"; exit;
    }
} else if(strtolower($ext) == "jpg") {
    if (!$im2 = imagecreatefromjpeg($image)) {
        echo "Error opening $image!"; exit;
    }
} else if(strtolower($ext) == "png") {
    if (!$im2 = imagecreatefrompng($image)) {
        echo "Error opening $image!"; exit;
    }
} else {
    die;
}

imagecopy($im2, $im, (imagesx($im2)/2)-(imagesx($im)/2), (imagesy($im2)/2)-(imagesy($im)/2), 0, 0, imagesx($im), imagesy($im));

if($_GET[repeat]) {
    $waterless = imagesx($im2) - imagesx($im);
    $rest = ceil($waterless/imagesx($im)/2);
    
    for($n=1; $n<=$rest; $n++) {
        imagecopy($im2, $im, ((imagesx($im2)/2)-(imagesx($im)/2))-(imagesx($im)*$n), (imagesy($im2)/2)-(imagesy($im)/2), 0, 0, imagesx($im), imagesy($im));
        imagecopy($im2, $im, ((imagesx($im2)/2)-(imagesx($im)/2))+(imagesx($im)*$n), (imagesy($im2)/2)-(imagesy($im)/2), 0, 0, imagesx($im), imagesy($im));
    }
}

$last_modified = gmdate('D, d M Y H:i:s T', filemtime ($image));

header("Last-Modified: $last_modified");
header("Content-Type: image/jpeg");
imagejpeg($im2,NULL,95);
imagedestroy($im);
imagedestroy($im2);

?>
Скрипт был взят с этого сайта http://rs.bahneman.com/protecting_your_images.php
 Может я сделал неправильные записи в .htaccess:

RewriteEngine on
RewriteBase /
RewriteRule ^(watermarked.*)/(.*\.*)$ /~liem/wm.php?p=$1&i=$2

 Подскажите, что я  мог неправильно сделать. Заранее благодарен за ответы.
*

Keno

  • Осваиваюсь на форуме
  • 84
  • 41
 Для меня выходом по watermark стал простенький скрипт (см. ниже), который я нашел в сети. Работает он через .htaccess. В данном случае .htaccess перенаправляет с любой картинки на этот скрипт (_watermark.php), а этот скрипт уже по переданной информации (путь к картинке), добавляет на неё watermark.
  Итак, если это кого-то заинтересует вот краткое содержание что нужно сделать:
 1.Создаем в корне сайта папку с названием watermark и забрасываем в нее два этих файла:
_watermark.php (сам скрипт):
Код
<? 

waterMark($_SERVER['DOCUMENT_ROOT'].$_SERVER['REQUEST_URI'], "watermark.png", "bottom=5,right=5");

function waterMark($original, $watermark, $placement = 'bottom=5,right=5', $destination = null) {
   $original = urldecode($original);
   $info_o = @getImageSize($original);
   if (!$info_o)
         return false;
   $info_w = @getImageSize($watermark);
   if (!$info_w)
         return false;

   list ($vertical, $horizontal) = split(',', $placement,2);
   list($vertical, $sy) = split('=', trim($vertical),2);
   list($horizontal, $sx) = split('=', trim($horizontal),2);

   switch (trim($vertical)) {
      case 'bottom':
         $y = $info_o[1] - $info_w[1] - (int)$sy;
         break;
      case 'middle':
         $y = ceil($info_o[1]/2) - ceil($info_w[1]/2) + (int)$sy;
         break;
      default:
         $y = (int)$sy;
         break;
      }

   switch (trim($horizontal)) {
      case 'right':
         $x = $info_o[0] - $info_w[0] - (int)$sx;
         break;
      case 'center':
         $x = ceil($info_o[0]/2) - ceil($info_w[0]/2) + (int)$sx;
         break;
      default:
         $x = (int)$sx;
         break;
      }

   header("Content-Type: ".$info_o['mime']);

   $original = @imageCreateFromString(file_get_contents($original));
   $watermark = @imageCreateFromString(file_get_contents($watermark));
   $out = imageCreateTrueColor($info_o[0],$info_o[1]);

   imageCopy($out, $original, 0, 0, 0, 0, $info_o[0], $info_o[1]);
   if( ($info_o[0] > 250) && ($info_o[1] > 250) )
   {
   imageCopy($out, $watermark, $x, $y, 0, 0, $info_w[0], $info_w[1]);
   }

   switch ($info_o[2]) {
      case 1:
         imageGIF($out);
         break;
      case 2:
         imageJPEG($out);
         break;
      case 3:
         imagePNG($out);
         break;
         }

   imageDestroy($out);
   imageDestroy($original);
   imageDestroy($watermark);

   return true;
   }

?>

и watermark.png(вашу картинку)
 2.Создаем файл .htaccess:
Код
DirectoryIndex index.php 
 
<FilesMatch "\.(gif|jpg|png)$">
   RewriteEngine On
   RewriteCond %{REQUEST_FILENAME} -f
   RewriteRule ^(.*)$ /watermark/_watermark.php [T=application/x-httpd-php,L,QSA]
</FilesMatch>

и забрасываем его в папку с вашими картинками. К примеру в папку stories - в данном случае водяные знаки будут накладываться на все картинки и папки с картинками находящиеся в папке stories. Если нужно накладывать watermarkи не на все изображения папки stories, а на какие-то определенные папки с картинками - закидываем файл .htaccess именно в те папки с изображениями где нужно наложение водяных знаков.
Все! Ваши фотки с водяным знаком!

Скрипт был подкоректирован с учетом предложений, замечаний

1. Чтобы не было знака на аватарах пользователей или на картинках малого размера в _watermark.php была изменена строка:
imageCopy($out, $watermark, $x, $y, 0, 0, $info_w[0], $info_w[1]);
на:
if( ($info_o[0] > 250) && ($info_o[1] > 250) )
{
imageCopy($out, $watermark, $x, $y, 0, 0, $info_w[0], $info_w[1]);
}

250 - это размер картинки (ширина и высота), который указывает, что до 250 пикселей водяной знак не будет накладываться на изображение, а уже после 250 - будет (Размеры можно подгонять под себя).
2. Также была решена проблема не отображения картинок содержащие пробелы или русские буквы (см. пост ниже от Redstagm) Добавлено:
$original = urldecode($original);
3. Были исправлены мелкие неточности.

Внизу в архиве находятся все 3 выше перечисленные файла



[вложение удалено Администратором]
*

zlideni

  • Давно я тут
  • 344
  • 76
У меня проблема такого плана http://joomlaforum.ru/index.php/topic,45450.new.html , этот скрипт даёт тот же результат а точнее в моём случае никакого. Жаль…

Все зделала точно как написанно..... НЕРАБОТАЕТ

Кто может правильно поправить и доработать эту функцию ?  Помогите , пожалуйста...
*

Keno

  • Осваиваюсь на форуме
  • 84
  • 41
См. 2-ой пост с правками и дополнениями.
*

zlideni

  • Давно я тут
  • 344
  • 76
Права доступа 777 поставил для полного счастья, в остальном всё сделал как прописана.
.htaccess закидываю в папку с jpg  изображениями. Фотки открываются но без водяного знака.
“о умолчанию ето будет папка stories” про это по подробние.
*

DeeByZ

  • Новичок
  • 7
  • 0
+1 все делал как сказано, не работает...
*

Keno

  • Осваиваюсь на форуме
  • 84
  • 41
См. 2-ой пост с правками и дополнениями.
*

smls

  • Осваиваюсь на форуме
  • 117
  • 7
Keno. какие атрибуты, у файлов должны быть? У меня вообще рисунки перестает показывать из той папки куда .htaccess запихиваю.
*

Keno

  • Осваиваюсь на форуме
  • 84
  • 41
См. 2-ой пост с правками и дополнениями.
*

smls

  • Осваиваюсь на форуме
  • 117
  • 7
У меня  через mosimage...
*

Morfei

  • Захожу иногда
  • 24
  • 5
*

huntter

  • Новичок
  • 4
  • 0

htaccess.txt(тот что в root-корне) переименовали в  .htaccess (уточню главный .htaccess никуда удалять не надо он задает дополнительные параметры  для работы веб-сервера во всех каталогах (папках) ,а тот что я давал .htaccess -распространяет свое действие -только на папку stories(или на ту папку куда вы закинете с вашыми картинками)
 Права доступа выставили?

чей-то я не догнал, что надо сделать с этим файлом ???? :'(
*

zlideni

  • Давно я тут
  • 344
  • 76
С этим .htaccess? Просто копируешь в паки с изображениями которые будут выводится через {mosimage}.
*

huntter

  • Новичок
  • 4
  • 0
С этим .htaccess? Просто копируешь в паки с изображениями которые будут выводится через {mosimage}.

так он что должен иметь расширение .txt  ?
*

zlideni

  • Давно я тут
  • 344
  • 76
ПОЧИТАЙ ВНИМАТЕЛЬНО 2 ПОСТ .
*

huntter

  • Новичок
  • 4
  • 0
ПОЧИТАЙ ВНИМАТЕЛЬНО 2 ПОСТ .

перечитал нескольок раз! сделал _watermark.php  ,  загрузил watermark.png  , сделал .htaccess  (не .txt)
собственно вопрос... дольше никаких файлов не делаю ? и не переименовываю ? )))
кстати у тебя работает ???
*

zlideni

  • Давно я тут
  • 344
  • 76
У МЕНЯ БЫЛЙ ДРУГИЕ ЗАДАЧИ…
Ты где собирайся  выводить изображение?
Если всё сделал как написано то посмотри что получилось…
*

huntter

  • Новичок
  • 4
  • 0
У МЕНЯ БЫЛЙ ДРУГИЕ ЗАДАЧИ…
Ты где собирайся  выводить изображение?
Если всё сделал как написано то посмотри что получилось…


я хочу watermark на всех изображениях ФОРУМА (в дальнейшем может быть и сайта)! но не только на загружаемых но и на уже загруженных.

установил как написано, фотки перстали грузиться (((
P.S.  грузится половина фоток!!! закономерности нету   :o

« Последнее редактирование: 14.11.2008, 15:03:50 от huntter »
*

Keno

  • Осваиваюсь на форуме
  • 84
  • 41
См. 2-ой пост с правками и дополнениями.
*

killer-13

  • Новичок
  • 7
  • 0
поставил этот скрипт..он заработал сразу..но как и писалось рание..некоторые картинки перестали просто отоброжаться..что мне совсем не понятно..хотелось бы получить дельные советы..а так это былобы решение возникшей потребности в подписи картинок
*

kokus

  • Захожу иногда
  • 12
  • 0
Все точно так же, сделал в точности по описанию и перестали отображаться картинки. Кто нашел решение, пожалуйста отпишитесь. Какие еще есть варианты вывода водяных знаков кроме этого скрипта и Multithumb?

Огромное спасибо автору топика, Keno.

Всё получилось с первого раза!


Но образовался вопрос на засыпку: каким способом можно обойти имена картинок содержащие пробелы или русские буквы?

!!!???!!!

Цитировать
Но образовался вопрос на засыпку: каким способом можно обойти имена картинок содержащие пробелы или русские буквы?

 :D Спасибо Алексу!!!!

function waterMark($original, $watermark, $placement = 'bottom=5,right=5', $destination = null) {

^добаить после этой строчки^

$original = urldecode($original);
*

killer-13

  • Новичок
  • 7
  • 0
to_Redstagm
если не трудно..выложе сюда свою рабочую версию..а то я так и не смог победить проподание части картинок..
*

killer-13

  • Новичок
  • 7
  • 0
вчера весь день убил..и дошел до истины..в скрипте
_watermark.php непрвильная строка
waterMark($_SERVER['DOCUMENT_ROOT'].$_SERVER['REQUEST_URI'], "watermark.png", "bottom=5,right=5");
если сам фаил называется _watermark.png то работать небудет..надо поправить
и в .htaccess который кладется в папку с имайджами поправить путь до файла
 RewriteRule ^(.*)$ /watermark/_watermark.php [T=application/x-httpd-php,L,QSA]
у меня в нем почемуто пробелы были..
после этого все картинки пометились водяным знаком.. и ничего не проподает
но возник вопрос..а как ввести ограничение на размер картинок??
скажем метить картинки размером от 100*100 и больше..меньше не трогать..
а то неохото пересортировывать картинки..

Цитировать
но возник вопрос..а как ввести ограничение на размер картинок??
скажем метить картинки размером от 100*100 и больше..меньше не трогать..
а то неохото пересортировывать картинки..

Можно сделать не изменяя скрипт, например ватермарк накладываться с правого, нижнего угла, можно сделать ватермарк например 1000х1000 а правый нижний угол оставить прозрачным, 100х100 или более.
*

abbbc

  • Новичок
  • 9
  • 0
есть 2 формата картинки jpeg и jpg
Одна картинка а другая фотка. Пропишите правильно функции и расширения, возможно поэтому у вас не работает.

*

smls

  • Осваиваюсь на форуме
  • 117
  • 7
Скрипт после исправления путей к файлу, заработал.
Как сделать так, чтоб ватермарк ставился только на изображения находящиеся в папке с .htaccess и на ставился на изображения из подпапок этой папки?
*

killer-13

  • Новичок
  • 7
  • 0
как я предпологаю..действие этого самомго файла распространяются от корня где лежит..до всего что ниже по уровню..попробуй разве что положить в подпапки пустышку..которая может будет отменять действия..или клади меченые картинки в другую папку..у меня так сделано..
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Responsive Image Gallery для Joomla 3

Автор Alex GOOD

Ответов: 2
Просмотров: 693
Последний ответ 16.05.2017, 18:03:25
от stendapuss
Нужна галерея с привязкой к материалам Joomla

Автор Strikerus

Ответов: 18
Просмотров: 1392
Последний ответ 05.04.2017, 12:16:01
от Strikerus
Список галерей с граббером изображений по ссылке для Joomla 3.5

Автор VladimirAtom

Ответов: 0
Просмотров: 587
Последний ответ 18.05.2016, 13:57:05
от VladimirAtom
Event Gallery 3.1.5. не загружает фото - Joomla

Автор Alexiares

Ответов: 1
Просмотров: 632
Последний ответ 10.05.2016, 03:34:31
от Alexiares
Галерея Joomla (Вопрос нуба)

Автор Q.Switch

Ответов: 1
Просмотров: 817
Последний ответ 03.03.2016, 00:09:46
от Q.Switch