Форум русской поддержки Joomla!® CMS
06.12.2016, 16:09:55 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 3.0 FAQ Joomla 2.5 FAQ Joomla 1.5 FAQ Правила форума Новости Joomla Реклама Войти Регистрация Помощь  
Страниц: [1]   Вниз
  Добавить закладку  |  Печать  
Автор

Добавление водяного знака (watermark) на миниатюры и в детальный просмотр при аплоаде оригинального

 (Прочитано 354 раз)
0 Пользователей и 1 Гость смотрят эту тему.
ardeus
Новичок
*

Репутация: +0/-0
Offline Offline

Сообщений: 7


« : 19.03.2015, 23:03:53 »

Доброго времени суток, коллеги.

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

Для этого ковыряю процедуру ресайза изображения в миниатюру и хочу добавить туда код типа такого:

Код:
public function watermark_center_full($watermarkFile) {
    $this->checkLoaded();
    if ($wImg = $this->loadImage($watermarkFile)) {
        $posX = 0;
        $posY = 0;
        $dst_ratio = $this->width / $this->height;
        $water_ratio =  $wImg['width'] / $wImg['height'];
        if ($water_ratio > $dst_ratio){
            $scale = $wImg['width'] / $this->width;
            $posY = $this->height / 2 -  $wImg['height'] / $scale / 2;
        } else {
            $scale = $wImg['height'] / $this->height;
            $posX = $this->width / 2 - $wImg['width'] / $scale / 2;
        }
        imagecopyresized ($this->image, $wImg['image'], $posX, $posY, 0, 0, $wImg['width']/ $scale, $wImg['height']/ $scale, $wImg['width'], $wImg['height']);
        imagedestroy($wImg['image']);
        return $this;
    } else {
        return false;
    }
}

Подскажите как правильно прописать эту процедуру. Было бы классно если бы ее можно было вызывать при загрузке с фронтенда пользователем и/или с помощью кнопки "Пересоздать" (rebuild) в админке
Записан
Страниц: [1]   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Powered by SMF 1.1.21 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet