[Beta] Водяной знак на вложенные изображения
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Переход на 3.0.6 и выше | FAQ-3 (phpbb3) | Как задавать вопросы | Как устанавливать моды
Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение
).
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Переход на 3.0.6 и выше | FAQ-3 (phpbb3) | Как задавать вопросы | Как устанавливать моды
Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение
-
xalexz
- phpBB 1.0.0
- Сообщения: 6
- Стаж: 12 лет 7 месяцев
- Благодарил (а): 1 раз
Re: [Beta] Водяной знак на вложенные изображения
Всем привет!
Не знаю в чем была проблема, возможно в конфликте с мультизагрузчиком. (скорее всего).
Правда пришлось полностью переустановить весь форум (работающий 4 года) но теперь все работает! Ура.
Огромная благодарность автору за мод!
Не знаю в чем была проблема, возможно в конфликте с мультизагрузчиком. (скорее всего).
Правда пришлось полностью переустановить весь форум (работающий 4 года) но теперь все работает! Ура.
Огромная благодарность автору за мод!
-
Shredder
- Former team member
- Сообщения: 2266
- Стаж: 17 лет 9 месяцев
- Благодарил (а): 283 раза
- Поблагодарили: 584 раза
Re: [Beta] Водяной знак на вложенные изображения
С каким мультизагрузчиком? Я же на предыдущей странице написал, что ставил этот мод вместе с мультизагрузчиком, и конфликтов у них нет.xalexz писал(а):возможно в конфликте с мультизагрузчиком. (скорее всего).
В кривой установке твоя проблема была, либо в кривом форуме. "Старые" форумы часто этим страдают.
-
Anvar
- Former team member
- Сообщения: 1964
- Стаж: 16 лет 5 месяцев
- Благодарил (а): 67 раз
- Поблагодарили: 800 раз
[Path] Водяной знак на вложенные изображения
Небольшие изменения для инструкции. includes/functions_upload.php
В случае если не возможно наложить изображение, то загрузить как есть, а не выдавать ошибку.
Найти и удалить
Каждый этап можно делать не зависимо, т.е. выбрать именно то что вам нужно.
Устраняем всякое возможное влияние на загрузку аватар
//Правка includes/functions_user.php(в инструкции) в дальнейшем уже не потребуется.
Найти
Заменить на
Найти
Код: Выделить всё
// Image Watermark Mod Start -->
if (!isset($config['user_confirm_watermark']) || !$config['user_confirm_watermark'])
{
$wm_lock = true;
}
if ($this->is_image() && isset($config['img_create_watermark']) && $config['img_create_watermark'] && $wm_lock)
{
$this->watermark_images($this->extension);
}
// <-- Image Watermark Mod End
Код: Выделить всё
// Image Watermark Mod Start -->
if (!isset($config['user_confirm_watermark']) || !$config['user_confirm_watermark'])
{
$wm_lock = true;
}
if ($this->is_image() && isset($config['img_create_watermark']) && $config['img_create_watermark'] && $wm_lock && $_GET['mode'] != "avatar")
{
$this->watermark_images($this->extension);
}
// <-- Image Watermark Mod End
Исключаем проблему с загрузкой анимации gif
Анимация всё равно будет загружена, пусть даже без наложения изображения.
Найти
Заменить на
Ну и конечно в language/язык/common.php правку
Найти
Код: Выделить всё
if ($this->is_ani($this->destination_file))
{
$this->error[] = sprintf($user->lang[$this->upload->error_prefix . 'ANIMATE_GIF_WM_INWALID'], $this->destination_file);
}
Код: Выделить всё
if ($this->is_ani($this->destination_file))
{
$wn_types = false;
$type = false;
}
ANIMATE_GIF_WM_INWALID уже тоже не придётся делать.На изображения будет наложен разный watermark, из расчёта размера изображений
spacer.gif - Можно изменить на другое изображение в gif.
Найти
Вставить после
Найти
Код: Выделить всё
$water = imagecreatefrompng('images/watermark.png');
Код: Выделить всё
if (imagesx($img) < imagesx($water)*3)
{
$water = imagecreatefrompng('images/watermark_med.png');
if (imagesx($img) < imagesx($water)*3)
{
$water = imagecreatefrompng('images/watermark_mini.png');
if (imagesx($img) < imagesx($water)*3)
{
$water = imagecreatefrompng('images/watermark_zero.png');
if (imagesx($img) < imagesx($water)*3)
{
$water = imagecreatefromgif('images/spacer.gif');
}
}
}
}
Найти и удалить
Код: Выделить всё
else
{
$this->error[] = sprintf($user->lang['IMAGE_TYPE_WM_INWALID'], $type);
}
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось Anvar 12.10.2014 6:52, всего редактировалось 3 раза.
Не пишите вопросы лично, если можете задать их на форуме!
Спецзаказы не интересуют!
Спецзаказы не интересуют!
-
Anvar
- Former team member
- Сообщения: 1964
- Стаж: 16 лет 5 месяцев
- Благодарил (а): 67 раз
- Поблагодарили: 800 раз
Re: [Beta] Водяной знак на вложенные изображения
Кстати интересный баг обнаружен, если стоит phpBB Gallery, то при загрузке изображений в галерею подхватывается этот водяной знак, а если в ней настроен свой, то они отобразятся оба.
Пока не решал эту проблему, разместил по разным углам.
Пока не решал эту проблему, разместил по разным углам.
-
kolu4iy
- phpBB 1.0.0
- Сообщения: 4
- Стаж: 12 лет 4 месяца
- Поблагодарили: 2 раза
Re: [Beta] Водяной знак на вложенные изображения
Я сделал по другому: добавил автоматический ресайз водяного знака.
include/functions_upload.php
Коэффициенты подобраны эмпирически, для меня. Знак должен занимать 1/3 изображения по ширине. При этом, если он больше, чем 1/6 изображения по высоте, то он пропорционально уменьшается.
include/functions_upload.php
Коэффициенты подобраны эмпирически, для меня. Знак должен занимать 1/3 изображения по ширине. При этом, если он больше, чем 1/6 изображения по высоте, то он пропорционально уменьшается.
Код: Выделить всё
$sx = imagesx($img);
$sy = imagesy($img);
$ix = imagesx($water);
$iy = imagesy($water);
if( $ix!=0 && $iy!=0 )
{
$newix = intval($sx/3);
$newiy = intval($newix*$iy/$ix);
if ( $newiy>intval($sy/6) )
{
$newiy = intval($sy/6);
$newix = intval($ix*$newiy/$iy);
}
$thumb = imagecreatetruecolor($newix, $newiy);
imagealphablending($thumb, false);
imagesavealpha($thumb, true);
$transparent = imagecolorallocatealpha($thumb, 255, 255, 255, 127);
imagefilledrectangle($thumb, 0, 0, $newix, $newiy, $transparent);
imagecopyresampled($thumb, $water, 0, 0, 0, 0, $newix, $newiy, $ix, $iy);
$im = $watermark->create_watermark($img, $thumb, $config['watermark_opacity'], $config['default_position']);
if (isset($im))
{
switch ($type)
{
case 'jpg':
imagejpeg($im, $this->destination_file);
break;
case 'gif':
imagegif($im, $this->destination_file);
break;
case 'png':
imagepng($im, $this->destination_file);
break;
}
}
else
{
$this->error[] = sprintf($user->lang[$this->upload->error_prefix . 'GENERAL_UPLOAD_ERROR'], $this->destination_file);
}
}
else
{
$this->error[] = sprintf($user->lang['IMAGE_TYPE_WM_INWALID'], $type);
}
-
deamon739
- phpBB 1.4.1
- Сообщения: 41
- Стаж: 16 лет 5 месяцев
- Благодарил (а): 12 раз
Re: [Beta] Водяной знак на вложенные изображения
В каком месте надо сделать эту вставку? После строки?kolu4iy писал(а):Я сделал по другому: добавил автоматический ресайз водяного знака.
include/functions_upload.php
Коэффициенты подобраны эмпирически, для меня. Знак должен занимать 1/3 изображения по ширине. При этом, если он больше, чем 1/6 изображения по высоте, то он пропорционально уменьшается.
Код: Выделить всё
$water = imagecreatefrompng('images/watermark.png');-
kolu4iy
- phpBB 1.0.0
- Сообщения: 4
- Стаж: 12 лет 4 месяца
- Поблагодарили: 2 раза
Re: [Beta] Водяной знак на вложенные изображения
Да.
Для однозначности весь текст подправленной функции watermark_images:
Для однозначности весь текст подправленной функции watermark_images:
Код: Выделить всё
function watermark_images($type)
{
global $config, $user;
$wn_types = unserialize($config['wm_img_type']);
if ($this->is_ani($this->destination_file))
{
$this->error[] = sprintf($user->lang[$this->upload->error_prefix . 'ANIMATE_GIF_WM_INWALID'], $this->destination_file);
}
if ($type == 'jpeg')
{
$type = 'jpg';
}
if (in_array($type, $wn_types))
{
$file = $this->destination_file;
$watermark = new watermark();
switch ($type)
{
case 'jpg':
$img = imagecreatefromjpeg($this->destination_file);
break;
case 'gif':
$img = imagecreatefromgif($this->destination_file);
break;
case 'png':
$img = imagecreatefrompng($this->destination_file);
break;
default:
$this->error[] = sprintf($user->lang['IMAGE_TYPE_WM_INWALID'], $type);
return;
break;
}
$water = imagecreatefrompng('images/watermark.png');
$sx = imagesx($img);
$sy = imagesy($img);
$ix = imagesx($water);
$iy = imagesy($water);
if( $ix!=0 && $iy!=0 )
{
$newix = intval($sx/3);
$newiy = intval($newix*$iy/$ix);
if ( $newiy>intval($sy/6) )
{
$newiy = intval($sy/6);
$newix = intval($ix*$newiy/$iy);
}
$thumb = imagecreatetruecolor($newix, $newiy);
imagealphablending($thumb, false);
imagesavealpha($thumb, true);
$transparent = imagecolorallocatealpha($thumb, 255, 255, 255, 127);
imagefilledrectangle($thumb, 0, 0, $newix, $newiy, $transparent);
imagecopyresampled($thumb, $water, 0, 0, 0, 0, $newix, $newiy, $ix, $iy);
$im = $watermark->create_watermark($img, $thumb, $config['watermark_opacity'], $config['default_position']);
if (isset($im))
{
switch ($type)
{
case 'jpg':
imagejpeg($im, $this->destination_file);
break;
case 'gif':
imagegif($im, $this->destination_file);
break;
case 'png':
imagepng($im, $this->destination_file);
break;
}
}
else
{
$this->error[] = sprintf($user->lang[$this->upload->error_prefix . 'GENERAL_UPLOAD_ERROR'], $this->destination_file);
}
}
else
{
$this->error[] = sprintf($user->lang['IMAGE_TYPE_WM_INWALID'], $type);
}
}
else
{
$this->error[] = sprintf($user->lang['IMAGE_TYPE_WM_INWALID'], $type);
}
}
-
deamon739
- phpBB 1.4.1
- Сообщения: 41
- Стаж: 16 лет 5 месяцев
- Благодарил (а): 12 раз
Re: [Beta] Водяной знак на вложенные изображения
kolu4iy при использовании автоматического ресайза водяного знака при заливке фото через tapatalk, выдается ошибка - jpg не поддерживается для установки водяного знака (
-
kolu4iy
- phpBB 1.0.0
- Сообщения: 4
- Стаж: 12 лет 4 месяца
- Поблагодарили: 2 раза
Re: [Beta] Водяной знак на вложенные изображения
Возможно, что это от того, что в коде жестко прописаноkolu4iy при использовании автоматического ресайза водяного знака при заливке фото через tapatalk, выдается ошибка - jpg не поддерживается для установки водяного знака (
Код: Выделить всё
$water = imagecreatefrompng('images/watermark.png');Вообще код достаточно прозрачный, но лично мне, если честно, не хочется поднимать копию форума, ставить туда tapatalk, и ловить место, где будет ругаться php. Буду рад если коллеги с уже установленным tapatalk подскажут куда копать - возможно, что с его (tapatalk) установкой стандартный процесс загрузки вложений как-то меняется, и данная функция получает, например, уже измененный тип картинки (не .jpg).
-
deamon739
- phpBB 1.4.1
- Сообщения: 41
- Стаж: 16 лет 5 месяцев
- Благодарил (а): 12 раз
Re: [Beta] Водяной знак на вложенные изображения
Файл лежит именно по указанному пути.kolu4iy писал(а):У вас сам водяной знак - лежит в images/watermark.png? И он точно .png?
После вставки кода по ресайзу водяного знака со стационарной машины загрузка работает без ошибок. Ошибка возникает только при использовании на мобильном устройстве через приложение tapatalk.
Вернул код как было изначально, т.е. убрал авторесайз ватермарка. На данный момент этот ресайз не критичен.
Но спасибо за отклик.
-
romaamor
- phpBB 3.0.7-PL1
- Сообщения: 2517
- Стаж: 14 лет 5 месяцев
- Откуда: Одесса
- Благодарил (а): 829 раз
- Поблагодарили: 214 раз
Re: [Beta] Водяной знак на вложенные изображения
Добрый день. После установки этого мода ( Установку перепроверил ), и после загрузки любого вложения, страница перезагружается пустой. Что может быть ?
-
Татьяна5
- Поддержка

- Сообщения: 13159
- Стаж: 15 лет 1 месяц
- Благодарил (а): 236 раз
- Поблагодарили: 3750 раз
Re: [Beta] Водяной знак на вложенные изображения
romaamor, ошибка в установке или конфликт с другим модом
Что пишет дебаг? Что в логах сервера?
Что пишет дебаг? Что в логах сервера?
-
romaamor
- phpBB 3.0.7-PL1
- Сообщения: 2517
- Стаж: 14 лет 5 месяцев
- Откуда: Одесса
- Благодарил (а): 829 раз
- Поблагодарили: 214 раз
Re: [Beta] Водяной знак на вложенные изображения
Как бы ругается на ошибку в шаблоне constants.phpТатьяна5 писал(а):Что пишет дебаг? Что в логах сервера?
[Wed Jun 18 13:47:08 2014] [error] [client 95.111.239.16] PHP Notice: Constant THANKS_TABLE already defined in /home/vladr546/domains/satray.ru/public_html/includes/constants.php on line 326, referer: http://satray.ru/
-
Татьяна5
- Поддержка

- Сообщения: 13159
- Стаж: 15 лет 1 месяц
- Благодарил (а): 236 раз
- Поблагодарили: 3750 раз
Re: [Beta] Водяной знак на вложенные изображения
Это из мода thanks for postromaamor писал(а):Constant THANKS_TABLE already defined
Сколько у вас в
/includes/constants.php строк с THANKS_TABLE? Должна быть одна-
romaamor
- phpBB 3.0.7-PL1
- Сообщения: 2517
- Стаж: 14 лет 5 месяцев
- Откуда: Одесса
- Благодарил (а): 829 раз
- Поблагодарили: 214 раз
Re: [Beta] Водяной знак на вложенные изображения
Прописано дважды
Код: Выделить всё
define('THANKS_TABLE', $table_prefix . 'thanks');
