Добро пожаловать в наше сообщество!
skripters.net - небольшой форум для вэб-мастеров на котором вам предоставляется широкий выбор скриптов, плагинов, стилей и много чего еще для запуска собственного проекта: интернет-магазина, форума, корпоративного сайта, продающего лендинга. Здесь вы найдете много решений по заработку в интернет. Сможете продать или купить нужное вам решение для старта своего веб-проекта. Опытные пользователи проконсультируют вас если вы вначале пути, подскажут как лучше, помогут в установке и настройке.
1. Для регистрации доступна только одна почтовая служба - GMAIL
2. Если после регистрации вы не получили письмо - проверьте папку СПАМ

Помощь Водяной знак на картинке товара

angel63

Premium+
Регист
24 Дек 2016
Сообщения
85
Реакции
19
Подскажите пож. как и где указать размещение водяного знака на картинке товара.А то как то получается он стоит по середине и перкрывает пол картинки.
 

Вложения

  • Безымянный.png
    Безымянный.png
    125 KB · Просмотры: 10

MRX

Администратор
Регист
6 Апр 2016
Сообщения
2.558
Реакции
2.023
Думаю в style.cc ищите класс .watermark-img и с ним уже играйтесь.
И вотермарки желательно делать в расширении .png так как тут присутствует прозрачность (у вас на скриншоте ее нет)
 

angel63

Premium+
Регист
24 Дек 2016
Сообщения
85
Реакции
19
ерунда какая то у меня получается. Не нашёл я .watermark-img. И почему то не загружается новый watermark.Проверяеш по ftp, вроде да,поменялась картинка, в админке показывается старая. кеш почистил-тоже самое. Вроде как с другого места её подтягивает.
 

MRX

Администратор
Регист
6 Апр 2016
Сообщения
2.558
Реакции
2.023
Не нашёл я .watermark-img.
Папка mg-admin => design => css
upload_2017-2-23_12-59-16.png
И почему то не загружается новый watermark.Проверяеш по ftp, вроде да,поменялась картинка, в админке показывается старая.
А вы по фтп загружаете или через админку? Какая версия пхп у вас на хостинге?
 

angel63

Premium+
Регист
24 Дек 2016
Сообщения
85
Реакции
19
версия пхп 5.3.10. Загружал картинки по разному. Странно как то. При редактировании товара, ватемарк поменялся на новый.Но в админке показывается старый.а вот в программировании конечно я слаб. Может кто поможет опустить ватемарк вниз до конца.
 

k4el4

Premium+
Регист
9 Фев 2017
Сообщения
41
Реакции
38
Я делал проще. Все картинки у меня на сайте фиксированного размера 500х500 пикселей. Соответственно я создал полупрозрачный png размера 500х500 и выставил положение как мне надо. Могута размещает ватермарк в центре фотки, соответственно границы совпадают и ватермарк всегда где мне надо.

Изображения в админке не сбрасываются это проблема кэша, почему-то могута сбрасывает кэш только публичной части и вообще сброс кэша порой работает некорректно. Надо либо забить, либо использовать для проверки чистый браузер (приватный режим например).
 
  • Мне нравится
Реакции: MRX

k4el4

Premium+
Регист
9 Фев 2017
Сообщения
41
Реакции
38
Нашел. Положение и размеры ватермарка задаются в файле /mg-core/lib/upload.php в функции "addWatterMark".
Примерно эти строки:
PHP:
    // помещаем водяной знак на изображение
    $dest_x = (($size[0]) / 2) - (($watermark_width) / 2);
    $dest_y = (($size[1]) / 2) - (($watermark_height) / 2);
 

k4el4

Premium+
Регист
9 Фев 2017
Сообщения
41
Реакции
38
Раз уж пошла такая пьянка, то вот как я переписал эту функцию чтобы она поддерживала не только перемещение, но и масштабирование ватермарка.
PHP:
  /**
   * Добавляет водяной знак к картинке.
   * @param type $image - путь до картинки на сервере
   * @return boolean
   */
  public function addWatterMark($image) {
    $filename = $image;
    if (!file_exists('uploads/watermark/watermark.png')) {
      return false;
    }
    $size_format = getimagesize($image);
    $format = strtolower(substr($size_format['mime'], strpos($size_format['mime'], '/') + 1));

    // создаём водяной знак
    $watermark = imagecreatefrompng('uploads/watermark/watermark.png');
    imagealphablending($watermark, false);
    imageSaveAlpha($watermark, true);
    // получаем значения высоты и ширины водяного знака
    $watermark_width = imagesx($watermark);
    $watermark_height = imagesy($watermark);

    // создаём jpg из оригинального изображения
    $image_path = $image;



    switch ($format) {
      case 'png':
        $image = imagecreatefrompng($image_path);
        $w = imagesx($image);
        $h = imagesy($image);
        $imageTrans = imagecreatetruecolor($w, $h);
        imagealphablending($imageTrans, false);
        imageSaveAlpha($imageTrans, true);


        $col = imagecolorallocate($imageTrans, 0, 0, 0);
        imagefilledrectangle($imageTrans, 0, 0, $w, $h, $col);
        imagealphablending($imageTrans, true);


        break;
      case 'gif':
        $image = imagecreatefromgif($image_path);
        break;
      default:
        $image = imagecreatefromjpeg($image_path);
    }

    //если что-то пойдёт не так
    if ($image === false) {
      return false;
    }
    $size = getimagesize($image_path);

    // Задаем размер ватермарка относительно размера картинки
    // ! возможно ошибка, ватермарк будет вылазить за границы очень длинных и узких картинок !
    if ($size[0] >= $size[1]) { // если ширина больше, то считаем относительно нее
      $watermark_width_real = $size[0] * 0.28;
      $watermark_height_real = $watermark_width_real / $watermark_width * $watermark_height;
    }else{    // Иначе относительно высоты
      $watermark_height_real = $size[1] * 0.07;
      $watermark_width_real = $watermark_height_real / $watermark_height * $watermark_width;
    }

    // помещаем водяной знак на изображение (здесь задаётся расположение ватермарка на картинке)
    $dest_x = (($size[0]) / 2) - (($watermark_width_real) / 2);
    $dest_y = (($size[1]) * 0.873) - (($watermark_height_real) / 2);

    imagealphablending($image, true);
    imagealphablending($watermark, true);

    imageSaveAlpha($image, true);
    // создаём новое изображение (использована функция поддерживающая масштабирование ватермарка вместо обычной imagecopy)
    imagecopyresampled($image, $watermark, $dest_x, $dest_y, 0, 0, $watermark_width_real, $watermark_height_real, $watermark_width, $watermark_height);

    $imageformat = 'image'.$format;
    if ($format = 'png') {
      $imageformat($image, $filename);
    } else {
      $imageformat($image, $filename, 100);
    }

    // освобождаем память
    imagedestroy($image);
    imagedestroy($watermark);
    return true;
  }
 

nick584

Premium+
Регист
29 Июл 2017
Сообщения
4
Реакции
0
У меня почему-то не сохраняется водяной знак, т.е. я его загружаю ставлю галочку "Использовать водяной знак для изображений", но он почему-то его не использует. Помогите пжл.! В чем может быть проблема? Сайт кириллический
 
Сверху