На одном и из сайтов клиентов понадобилось добавить водяные знаки на фотографии. В качестве системы управления контентом была установлена K2. Поэтому ее и пришлось допиливать.

Итак. Предположим вы сами создали сайт или заказали его у компании webfuture.zp.ua на CMS Joomla, а теперь решили нанести на фотографии водяной знак размером 120*80 в левый верхний угол. Давайте рассмотрим как это сделать. 

Первым делом был изготовлен водяной знак и сохранен в папку images

Watermark (водяной знак) был изготовлен в формате PNG. Теперь нужно открыть файл /administrator/components/com_k2/models/item.php

Переходим примерно  на 212 строку и находим там следующий код

$params->merge($cparams);

//Original image

$savepath = JPATH_SITE.DS.'media'.DS.'k2'.DS.'items'.DS.'src';

Дополняем его новым определением пути к водяному знаку

$params->merge($cparams); 

$img_url_watermark = "../images/watermark.png";

//Original image

$savepath = JPATH_SITE.DS.'media'.DS.'k2'.DS.'items'.DS.'src';

Далее перебираемся в строку примерно 228

//XLarge image

$handle->image_resize = true;

$handle->image_ratio_y = true;

и дополняем ее

//XLarge image

$handle->image_watermark = $img_url_watermark;

$handle->image_watermark_position = "TL";

$handle->image_resize = true;

$handle->image_ratio_y = true;

Тоже самое проделываем для строки 246 строки LARGE IMAGE и 264 MEDIUM IMAGE. Для более мелких не рекомендую, но если нужно, то можно.

Теперь идем на строку примерно 458 и находим следующий код

if (!JArchive::extract($savepath.DS.$handle->file_dst_name, $savepath.DS.$row->id)) {
$mainframe->redirect('index.php?option=com_k2&view=items', JText::_('K2_GALLERY_UPLOAD_ERROR_CANNOT_EXTRACT_ARCHIVE'), 'error');
} else {
$row->gallery = '{gallery}'.$row->id.'{/gallery}';
}
JFile::delete($savepath.DS.$handle->file_dst_name);
$handle->Clean();

После этого кода добавляем следующий код

//gallery watermark
if($dir = opendir($savepath.DS.$row->id)) {
while (false !== ($file = readdir($dir))) {
$handle = new Upload ($savepath.DS.$row->id.'/'.$file);
$handle->allowed = array('image/*');
$handle->file_auto_rename = false;
$handle->file_overwrite = true;
$handle->image_resize = ture;
$handle->image_x = 1024;
$handle->image_ratio_y = true;
$handle->image_watermark = $img_url_watermark;
$handle->image_watermark_position = "TL";
$handle->image_convert = "jpg";
$handle->jpeg_quality = 85;
$handle->Process($savepath.DS.$row->id);
$handle->Clean();
}
closedir($dir);
}
//end

Ну вот в принципе и все. сохраняем и пробуем.

 

Комментарии  

 
+2 # 12.03.2012 19:40
Блин вроде все прописал и картинку такую прикольную сделал что не работает не пойму...
Ответить | Ответить с цитатой | Цитировать
 
 
0 # Administrator 12.03.2012 20:42
Должно, т.к. сейчас делаю сайт и там все работает. Локально делаете? может на сервере какие-то ограничения?
Ответить | Ответить с цитатой | Цитировать
 
 
0 # 31.03.2012 01:31
Спасибо большое !
Ответить | Ответить с цитатой | Цитировать
 
 
0 # 31.03.2012 01:39
а как например сделать нижний правый угол ?
Ответить | Ответить с цитатой | Цитировать
 
 
+4 # Administrator 31.03.2012 08:18
$handle->image_watermark _position = "TL";

TL - TOP LEFT (Верхний правый), я не экспериментиров ал, но должно помочь BOOTOM RIGHT (BR)

$handle->image_watermark _position = "BR";
Ответить | Ответить с цитатой | Цитировать
 
 
0 # 29.05.2012 18:16
Класс, спасибо что не было лень написать мануальчик.
Понятно, что есть на форумах буржуйских описание, но когда по 16 часов в сутки сидишь над разработкой сайта, родной язык как-то приятнее будет )))
Спасибо.
Ответить | Ответить с цитатой | Цитировать
 
 
0 # 03.07.2012 09:32
Он только при загрузке картинки работает??? а то у меня не пашет
Ответить | Ответить с цитатой | Цитировать
 
 
+1 # Administrator 03.07.2012 10:21
Да. Только когда загружается картинка, водянка накладывается. Если нужно на уже загруженные, то
1) переобработать их (руками, скриптом)
2) использовать htaccess для наложения водянки во время отдачи изображения пользователю.

2ой вариант более грузный, т.к. каждому пользователю будет водянка снова и снова генерироваться, в то время как первый вариант - один раз сделается и забудется.

Но у первого существенный минус есть. Если понадобится копирайт сменить, то придется иметь исходник изображения, т.к. текущее уже будет "испорчено"
Ответить | Ответить с цитатой | Цитировать
 

Добавить комментарий

Перед публикацией ваш комментарий должен пройти проверку Администратором.


Защитный код
Обновить