Watermark (водяной знак) для opencart 2.3.0.2

Тема в разделе "Инструкции и FAQ", создана пользователем Quip, 3 окт 2016.

  1. Quip

    Quip Новичок

    Сообщения:
    28
    Симпатии:
    7
    Создайте изображение в формате .png. Сохраните его с именем watermark.png и загрузите в директорию /image вашего сайта.
    Для сборки 2.3.0.2 достаточно внести изменения в одном файле.
    Откройте файл image.php находящийся в директории /catalog/model/tool/
    после строки
    Код:
    $image = new Image(DIR_IMAGE . $image_old);
    добавьте следующую строку
    Код:
    $image->watermark(new Image(DIR_IMAGE . 'watermark.png'), 'middlecenter');

    middlecenter
    - это позиция водяного знака отображающая его по центру изображения товара.

    Позиция может принимать следующие значения:
    • topleft - левый верхний угол
    • topcenter - сверху по центру
    • middleleft - слева посередине
    • middleright - справа посередине
    • bottomleft - внизу слева
    • bottomcenter - снизу по центру
    • bottomright - внизу справа
    Сохраните файл и перейдите в раздел модификаторы панели администратора сайта. Нажмите кнопку обновить.

    После этого необходимо удалить изображения находящиеся в кэше opencart. Для этого перейдите в директорию/image/cache/ и удалите раздел в котором находятся кэшированные изображения товаров. В моем случае это catalog. Очистите кэш браузера и перейдите на сайт. Теперь все изображения товаров отображаются на сайте с водяным знаком находящимся в центре.

    Чтобы водяной знак накладывался только на определенные изображения, допустим в карточке товара, необходимо указать размеры изображений для которых будет применен watermark. В моем случае это 450px и 600px.

    Замените добавленную ранее строку
    Код:
    $image->watermark(new Image(DIR_IMAGE . 'watermark.png'), 'middlecenter');
    
    на
    Код:
    if ($width == 450 || $height == 450) {
    $image->watermark(new Image(DIR_IMAGE . 'watermark.png'), 'middlecenter');
    }
    if ($width == 600 || $height == 600) {
    $image->watermark(new Image(DIR_IMAGE . 'watermark.png'), 'middlecenter');
    }
    Обновите модификаторы и очистите кэш.
     
    autonavi, Derill, ILexus и 3 другим нравится это.
  2. mars1an

    mars1an Специалист

    Сообщения:
    629
    Симпатии:
    516
    karmazin нравится это.
  3. Quip

    Quip Новичок

    Сообщения:
    28
    Симпатии:
    7
    Согласен:)
     
  4. Moldik

    Moldik Новичок

    Сообщения:
    2
    Симпатии:
    1
    Супер решение, а может подскажите как его применить к OpenCart 2.0.1?
     
  5. Ален

    Ален Эксперт

    Сообщения:
    2.056
    Симпатии:
    640
  6. Ален

    Ален Эксперт

    Сообщения:
    2.056
    Симпатии:
    640
  7. AkageMik

    AkageMik Новичок

    Сообщения:
    10
    Симпатии:
    2
    Здоровья тебе и жену хорошую, быстро, доступно и понятно, 3 часа времени было убито до того как найден этот пост.
     
    Tattyk нравится это.
  8. Tattyk

    Tattyk Новичок

    Сообщения:
    1
    Симпатии:
    0
    Спасибо, нанесла водяной знак на нужные фото, работает гуд:)
     
  9. Quip

    Quip Новичок

    Сообщения:
    28
    Симпатии:
    7
    Рад, что смог помочь.
     
  10. yaroslavskubiy

    yaroslavskubiy Новичок

    Сообщения:
    6
    Симпатии:
    0
    все сделал как написано. Но есть одно "но". Не на все изображения стал водяной знак. Формат одинаковый, разрешение тоже. Кеш очистил, модификатор - очистил. Знаю, что проблема где-то у меня, пока копаюсь. если у кого-то подобная ситуация была, или есть мысли по поводу этого, готов принять в работу. У меня версия ocStore 2.3.0.2.3.
     
  11. sitecreator

    sitecreator Новичок

    Сообщения:
    26
    Симпатии:
    3
    Бескомпромиссное решение с массой настроек для водяного знака.
    Файл водяного знака может быть в любом формате: PNG, GIF, JPEG.
    Настраивается все вплоть до прозрачности самого знака.

    Есть настраиваемая адаптивная обрезка (resize) и многое другое.

    И в качестве бонуса (а может быть это главное?) получаете максимальное сжатие изображений без потерь качества.
    Гугл PageSpeed перестанет ругаться на ваши изображения и предлагать их оптимизировать. И покажет вам много много попугаев баллов.

    [​IMG]

    Никаких компромиссов!
    Работает на любых сборках Opencart 1.5.* и 2.*

    Image Compressor & Watermark (Супер-сжатие картинок JPEG, PNG и "водяной знак")

    [​IMG]
     
    Последнее редактирование: 17 окт 2017
  12. GoldenScrew

    GoldenScrew Пользователь

    Сообщения:
    35
    Симпатии:
    2
  13. bird

    bird Новичок

    Сообщения:
    16
    Симпатии:
    2
    Скажите, пожалуйста, для сборки 2.1.0.2 это решение тоже работает? Или Вы пока не проверяли? Шаблон стандартный.
     
  14. autonavi

    autonavi Новичок

    Сообщения:
    3
    Симпатии:
    0
    А как сделать, чтобы изображение вмещалось в ширину картинку товара? чтобы не вылазило за пределы
     
  15. yaroslavskubiy

    yaroslavskubiy Новичок

    Сообщения:
    6
    Симпатии:
    0
    Поставь в css в стиле для картинки (img) : width:100% и height: 100%.
     
  16. autonavi

    autonavi Новичок

    Сообщения:
    3
    Симпатии:
    0
    не совсем понял, где это сделать
     
  17. autonavi

    autonavi Новичок

    Сообщения:
    3
    Симпатии:
    0
    И еще вопрос. Как сделать чтобы водяной знак размещался на картинках размером свыше 420 на 420?
     
  18. gov_tonk

    gov_tonk Новичок

    Сообщения:
    1
    Симпатии:
    0
    Верси Opencart 2.3 шаблон дефолт, не ставятся водяные знаки в карточке товара. Прошу помощи, кто сталкивался?
     
  19. tgbot454

    tgbot454 Новичок

    Сообщения:
    5
    Симпатии:
    0
    Добрый день,

    Могли бы подсказать - код имеет вид:


    if ($width_orig != $width || $height_orig != $height) {
    $image = new Image(DIR_IMAGE . $image_old);
    $image->resize($width, $height);

    if ($width == 80 || $height == 80) {
    $image->watermark(new Image(DIR_IMAGE . 'watermark.png'), 'bottomleft');
    }
    if ($width == 300 || $height == 300) {
    $image->watermark(new Image(DIR_IMAGE . 'watermark.png'), 'bottomleft');
    }
    if ($width == 200 || $height == 200) {
    $image->watermark(new Image(DIR_IMAGE . 'watermark.png'), 'bottomleft');
    }
    if ($width == 228 || $height == 228) {
    $image->watermark(new Image(DIR_IMAGE . 'watermark.png'), 'bottomleft');
    }
    if ($width == 90 || $height == 90) {
    $image->watermark(new Image(DIR_IMAGE . 'watermark.png'), 'bottomleft');
    }
    if ($width == 47 || $height == 47) {
    $image->watermark(new Image(DIR_IMAGE . 'watermark.png'), 'bottomleft');
    }
    if ($width == 74 || $height == 74) {
    $image->watermark(new Image(DIR_IMAGE . 'watermark.png'), 'bottomleft');
    }
    if ($width == 500 || $height == 500) {
    $image->watermark(new Image(DIR_IMAGE . 'watermark.png'), 'bottomleft');
    }
    if ($width == 120 || $height == 80) {
    $image->watermark(new Image(DIR_IMAGE . 'watermarkbrand.png'), 'bottomleft');
    }
    if ($width == 350 || $height == 300) {
    }
    $image->save(DIR_IMAGE . $image_new);
    } else {
    copy(DIR_IMAGE . $image_old, DIR_IMAGE . $image_new);
    }

    Но марка накладывается также и на изображения других размеров. Что я делаю не так?
     
  20. Ravilr

    Ravilr Специалист

    Сообщения:
    3.883
    Симпатии:
    1.065
    1. Всегда для проверки удалять кеш изображений ВЕСЬ!
    2. Узнать точно, на какие изображения накладывается.