Доброго времени суток, коллеги.
Бьюсь над следующей задачей: при добавлении фото с фронтенда или из админки нужно чтобы добавлялся водяной знак, желательно разные для миниатюр и детального изображения. При этом 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) в админке