Регистрация    Забыли пароль?        Правила форума    FAQ (читать перед созданием новой темы)
Имя   Пароль  запомнить
  
Просмотр темы
Вернуться на сайт: PHP-Fusion SF Russian Support Site

Форум поддержки PHP-Fusion SF | PHP-Fusion SF - Моды/Плагины | Моды/Mods
# 1 Тема: Watermark в галерею
Noxter
Пользователь

Avatar пользователя



Местный

Сообщений: 34
Откуда: Киев
Зарегистрирован: 13 Июня 2009, 16:01:47
Сказали спасибо 0 раз
Статус: offline
ICQ статус 451370972
Опубликовано 29 Июня 2010, 20:48:54
Всем привет)
Решил прикрутить "по своему" watermark (наложение картинки на изображение) в галерею.
И так приступаем f_emo_43.

В файле maincore.php в самом низу до строки if(!empty($title)) $title = $title." - "; пишем следующий код:

// Watermark
class watermark{
function create_watermark($main_img_obj, $watermark_img_obj, $alpha_level = 100) {
$alpha_level /= 100;
$main_img_obj_w = imagesx($main_img_obj);
$main_img_obj_h = imagesy($main_img_obj);
$watermark_img_obj_w = imagesx($watermark_img_obj);
$watermark_img_obj_h = imagesy($watermark_img_obj);
$main_img_obj_min_x = floor(($main_img_obj_w) - ($watermark_img_obj_w));
$main_img_obj_max_x = ceil(($main_img_obj_w) + ($watermark_img_obj_w));
$main_img_obj_min_y = floor(($main_img_obj_h) - ($watermark_img_obj_h));
$main_img_obj_max_y = ceil(($main_img_obj_h) + ($watermark_img_obj_h));
$return_img = imagecreatetruecolor($main_img_obj_w, $main_img_obj_h);
for($y = 0; $y < $main_img_obj_h; $y++) {
for($x = 0; $x < $main_img_obj_w; $x++) {
$return_color = NULL;
$watermark_x = $x - $main_img_obj_min_x;
$watermark_y = $y - $main_img_obj_min_y;
$main_rgb = imagecolorsforindex($main_img_obj, imagecolorat($main_img_obj, $x, $y));
if ($watermark_x >= 0 && $watermark_x < $watermark_img_obj_w &&
$watermark_y >= 0 && $watermark_y < $watermark_img_obj_h) {
$watermark_rbg = imagecolorsforindex($watermark_img_obj, imagecolorat($watermark_img_obj, $watermark_x, $watermark_y));
$watermark_alpha = round(((127 - $watermark_rbg['alpha']) / 127), 2);
$watermark_alpha = $watermark_alpha * $alpha_level;
$avg_red = $this->_get_ave_color($main_rgb['red'], $watermark_rbg['red'], $watermark_alpha);
$avg_green = $this->_get_ave_color($main_rgb['green'], $watermark_rbg['green'], $watermark_alpha);
$avg_blue = $this->_get_ave_color($main_rgb['blue'], $watermark_rbg['blue'], $watermark_alpha);
$return_color = $this->_get_image_color($return_img, $avg_red, $avg_green, $avg_blue);
} else {
$return_color = imagecolorat($main_img_obj, $x, $y);
}
imagesetpixel($return_img, $x, $y, $return_color);
}
}
return $return_img;
}
function _get_ave_color($color_a, $color_b, $alpha_level) {
return round((($color_a * (1 - $alpha_level)) + ($color_b * $alpha_level)));
}
function _get_image_color($im, $r, $g, $b) {
$c=imagecolorexact($im, $r, $g, $b);
if ($c!=-1) return $c;
$c=imagecolorallocate($im, $r, $g, $b);
if ($c!=-1) return $c;
return imagecolorclosest($im, $r, $g, $b);
}
}


После создаем файл watermark.php в корне сайта, и впишем в него следующий код:

<?php
include 'maincore.php';
$watermark = new watermark();
$main_img_obj = imagecreatefromjpeg($_GET['photo']);
$watermark_img_obj = imagecreatefrompng($_GET['watermark']);
$return_img_obj = $watermark->create_watermark($main_img_obj, $watermark_img_obj, 66);
header('Content-Type: image/jpeg');
imagejpeg($return_img_obj, '', 100);
?>


Теперь приступаем к галерее.
В файле photogallery.php заменим строки:

echo "<a href=\"javascript:;\" onclick=\"window.open('showphoto.php?photo_id=".$data['photo_id']."','','scrollbars=yes,toolbar=no,stat
us=no,resizable=yes,width=".($photo_size[0]+20).",height=".($photo_size[1]+20)."')\">";
echo "<img src='".($photo_thumb ? $photo_thumb : $photo_file)."' alt='".$data['photo_filename']."' title='".$locale['453']."' border='0'></a>\n</div>\n";


На


echo "<a href=\"watermark.php?photo=".PHOTODIR.$data['photo_filename']."&watermark=".PHOTOS."watermark.png\" class=\"highslide\" onclick=\"return hs.expand(this)\">";
echo "<img src='watermark.php?photo=".(isset($photo_thumb) ? $photo_thumb : $photo_file)."&watermark=".PHOTOS."watermark.png' alt='".$data['photo_filename']."' title='".$locale['453']."' border='0'></a>\n</div>\n";


При условии если вы уже прикрутили к галерее скрипт highslide.
Теперь нам осталось лишь в папку images/photoalbum положить картинку с ватермарком и обозвать ее watrmark.png.
Все готово! Отписываемся у кого что получилось.

P.S. Вот как у меня вышло http://kiev-mod.ho.ua/photogallery.php?photo_id=3


[Изменил(а) Noxter, 28 Августа 2010, 00:48:57]

--------------------
Я мстю и мстя моя будет страшна...
^ наверх ^ 451370972 http://www.kiev-mod.ucoz.ru
# 2  
rusbody
Пользователь

Avatar пользователя



Любитель Fusion

Сообщений: 282
Зарегистрирован: 28 Января 2008, 00:45:36
Сказали спасибо 7 раз
Статус: offline
Опубликовано 02 Июля 2010, 18:26:49
убери смайлики из новости


--------------------
Мой сайт на вашем движке бодибилдинг видео
^ наверх ^ rusbody.com
# 3  
Noxter
Пользователь

Avatar пользователя



Местный

Сообщений: 34
Откуда: Киев
Зарегистрирован: 13 Июня 2009, 16:01:47
Сказали спасибо 0 раз
Статус: offline
ICQ статус 451370972
Опубликовано 03 Июля 2010, 01:43:36
rusbody написал:
убери смайлики из новости

Это не смайлики! Это код. Вот только в теге [сode][/сode] оно отображается как смайл.


--------------------
Я мстю и мстя моя будет страшна...
^ наверх ^ 451370972 http://www.kiev-mod.ucoz.ru
# 4  
pozitiv
SF Team

Avatar пользователя

паZитифф

SF Support Team

Почетный SF

Сообщений: 1676
Откуда: Киев
Зарегистрирован: 18 Ноября 2007, 18:49:13
Сказали спасибо 148 раз
Статус: offline
ICQ статус 3902393
Опубликовано 03 Июля 2010, 12:59:18
Просто отключи смайлы в сообщении


--------------------
wmz - Z226856101527
wmr - R513979829437

Все вопросы задавать на форуме. На вопросы заданные в приват или асю неотвечаю!
^ наверх ^ 3902393 http://nekto.me
Перейти на форум:


106,271,667 уникальных посетителей
сейчас: 12 Декабря 2024, 02:45:04
Генерация страницы: 0.11 сек.

Original size:23 кб.
GZipped size: 7 кб.
Compression:71%