Watermark для Virtuemart

Признаться честно, мне реализация ватермарков (защитных картинок) для виртумарта давно не давала покоя. Почитал русскоязычные форумы, говорят, что нельзя это сделать автоматически, нужно внедрять защитные watermark в при подготовке картинок товаров и т.д.

Логично предположить, что всё гораздо интереснее и не так тривиально. Так оно и оказалось на самом деле. Немного порыскав по англоязычным форумам нашел действительно рабочую связку, которой я с вами с радостью и делюсь.

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

Я немного модифицировал скрипт. Ввел проверку на размер изображения, т.к. при использовании слимбокса ватермарк исходной картинки оказывается слишком мелким. После доработки мы видим следующую картину: на картинке шаблона товара у изображения мелкий watermark, а при увеличении он становится большим. Проверочную цифру можете подставить свою.

Итак, ближе к делу. Пошаговая инструкция.

1. В папке с изображениями товаров (/components/com_virtuemart/shop_images/product/) создаем файл .htaccess следующего содержания

1
2
3
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule \.(gif|jpeg|jpg|png)$ /components/com_virtuemart/shop_image/product/watermark.php [QSA,NC]

2. В той же папке создаем файл watermark. и кидаем туда этот код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<?php
// watermark.php

// Path the the requested file
$path = $_SERVER['DOCUMENT_ROOT'].$_SERVER['REQUEST_URI'];

// Load the requested image
$image = imagecreatefromstring(file_get_contents($path));
$w = imagesx($image);
$h = imagesy($image);

if (($w&gt;300)||($h&gt;300))
{
// Load the watermark image
$watermark = imagecreatefrompng('watermark2.png');
}
else
{
$watermark = imagecreatefrompng('watermark.png');
}

$ww = imagesx($watermark);
$wh = imagesy($watermark);

// Merge watermark upon the original image (centred)
imagecopy($image, $watermark, $w-$ww, $h-$wh, 0, 0, $ww, $wh);

// Send the image
header('Content-type: image/jpeg');
imagejpeg($image,null,95);
exit();
?>

3. Копируем в эту папку два файла watermark. (маленькая картинка) watermark2. (большая картинка) .

Всё! Можно пользоваться. Метод проверен лично мной на трех магазинах. Система работает. При попытке сохранения картинки ватермарк с неё не стирается. То есть выполняет свою задачу на 100%!

19 комментариев to “Watermark для Virtuemart”

  1. K_E_V_in Says:

    Здравствуйте, помогите пожалуйста.
    Исполнил в точности ваш метод, однако
    перестали картинки показываться вообще,
    высвечивается небольшой квадрат на сером
    фоне в котором крутится колесико, но
    загрузки рисунка не происходит. Убираю из
    папки .htaccess картинки показываются по
    прежнему, снова копирую в папку – тот же
    результат.
    В чем может быть дело?
    Спасибо. С уважением, Сергей.

  2. K_E_V_in Says:

    проверьте путь до файла watermark.php, наличие необходимых картинок-ватермарков. Ну и убедитесь, что картинки товаров в формате jpg.
    Но, скорее всего, не найден файл watermark.php

  3. Виктор Says:

    И все же не работает. Тестировал на локальном (денвер)
    joostina 1.2
    VirtueMart 1.1.3 stable
    картинки просто не открываются

  4. K_E_V_in Says:

    Проверьте синтаксис хтаксеса

  5. Виктор Says:

    я в .htaccess не силен поэтому скопировал один в один, даже пытался прописать полный путь к watermark.php, типа
    http://192.168.1.2/components/com_virtuemart/shop_image/product/watermark.php. Не помогло.

  6. K_E_V_in Says:

    Полный путь писать не нужно. Скорее всего, вы ошиблись в путях. хтаксес не понимает http

  7. Яхтсмен Says:

    Тоже нужна даная штуковина пробовал но ни в какую не хочет работать после установки все старые рисунки становяться 0 по высоте и 0 по ширине и соотвественно ниче вообще не показывается. Может требуется какаято библиотека которая не установлена по умолчанию? Проверьте корректность этой строки if (($w>300)||($h>300)). Какого формата должен быть watermark.png png8 или png24. Покажите хоть один работающий пример.

  8. Яхтсмен Says:

    Ура заработало проблема была в том что в файл watermark.php в самое начало добавлялись какието символы перед <?php и их небыло видно в дримвивере заметил их только при редактировании файла в фтп редакторе после удаления этих символов все заработало

  9. K_E_V_in Says:

    Отлично :)

  10. Яхтсмен Says:

    А как можно передвинуть ватермарк чуть выше и левее?

  11. K_E_V_in Says:

    экспериментируйте с переменными w и h.
    Сейчас в переменные записаны координаты правого нижнего угла

  12. rekrut Says:

    у меня не работает. причина не известна. Показываются те же картинки – без ватермарков. значит не работает htaccess …не происходит пере направление, но почему не понятно

  13. K_E_V_in Says:

    не факт, что htaccess не работает. Вполне возможно, что ошибка в путях. Кстати, картинки, насколько я помню неплохо перезалить бы. На готовые вроде как не накладывается. Но я не помню точно

  14. celentano Says:

    не работает, все картинки перестали грузится
    в чем может быть причина

  15. K_E_V_in Says:

    сорри за резкость, но проблема в кривых руках. Нужно не просто код скопипастить, а хотя бы проверить теги открытия/закрытия php

  16. celentano Says:

    теги присутствуют вместо картинки ссылка на нее в текстовом виде

  17. celentano Says:

    такое ощущение что в файле watermark.php ты сделал под себя настройки расположение папки с картинками–короче пути строятся не используя регулярные выражения

  18. K_E_V_in Says:

    Итак. В нашей системе три шага. Если всё правильно на каждом(!) из шагов, то всё работает. В первом шаге указана папка (хотя абсолютно всё равно, в какой папке будут картинки). Главное – чтобы в этой же папке были картинки с ватермарками и пхп-файл ватермарка

  19. celentano Says:

    пробывал пять раз и ни х….я, зато вот этот скрипт поставил с первого раза но не качаются с сайта картинки с вотермарком
    http://www.joomlaforum.ru/index.php?topic=35335.0

Прокомментировать

XHTML: Можете использовать теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Я ЧЕЛОВЕК!!!!.

Наталья Подольская шаблоны wordpress Энциклопедия животного мира. Фото и статьи. Заказать свадебный макияж в Минске, пробный макияж бесплатно!