- Спасибо получено: 5
Одинаковый водяной знак на разных фотографиях
- TopicStarter Иван Светлый
-
- Не в сети
20 сен 2020 17:38
Готовим портал к запуску, настраиваем разделы сайта под себя, тестируем. Решили, что нужно добавлять на фотографии наш водяной знак. В портале за работу с изображениями отвечает плагин SigPlus. У него в расширенных настройках можно включить добавление водяных знаков на все загружаемые фотографии. Включили, работает. Правда, выяснилась, что на разных фотографиях водяной знак смотрится сильно по-разному: на фотографии с шириной в 3000 пикселей знак очень мелкий, на фотографии с шириной в 400 пикселей - очень большой. Если бы на портал фотографии загружали только мы, тогда вопросов бы не было – просто бы перед загрузкой подгоняли бы все фотографии к нужному размеру. Но предполагается, что посетители портала сами будут загружать фотографии. Мы уверены, что большинство посетителей не знает как уменьшать размер фотографий, а те, кто знает, маловероятно, что будут этим заниматься. Поэтому нужно сделать, чтобы водяной знак автоматически был нужных размеров на любых фотографиях.
Здесь есть 2 пути:
1) Подгонять размер водяного знака под размер фотографии.
2) Подгонять размер фотографии под водяной знак.
Учитывая, что на стандартном FullHD-разрешении все-равно все большие фотографии уменьшаются до высоты в 833 пикселя, нет смысла идти по первому пути. Поэтому было решено настроить так, чтобы перед добавлением водяного знака загруженные фотографии уменьшались до 800 пикселей по высоте. Таких настроек в плагине SigPlus не оказалось и пришлось копаться в коде. Выяснилось, что за изменения изображений в SigPlus отвечает файл imagegenerator.php, который лежит в папке /plugins/content/sigplus/core/. В этом файле есть 3 места, в которых прописано добавление водяного знака. Видимо, для разных библиотек свой сценарий. На нашем портале библиотека указана «По умолчанию», поэтом у нас сработали правки в первом месте. У вас, возможно, правки нужно будет делать в другом месте.
Собственно, решение заключается в добавлении 1 строчки кода:
$source_img = imagescale( $source_img, imagesx($source_img)*(800/imagesy($source_img)), 800 );
Функция imagescale принимает 3 параметра: ссылку на фотографию и желаемые размеры по ширине и высоте. И возвращает уже масштабированную фотографию. В нашем случае, фотография просто пересохраняется в исходный файл. Высота указана 800 пикселей, а для ширины высчитывается пропорциональное значение.
Да, в нашем случае этот код нужно было добавить в 640 строку файла imagegenerator.php после следующего кода:
// load image
$source_img = self::imageFromFile($image_path, $orientation);
if (!$source_img) {
return false; // could not create image from file
}
Если у вас используется другая библиотека, то ищите свое место по комментарию
// load watermark image
Здесь есть 2 пути:
1) Подгонять размер водяного знака под размер фотографии.
2) Подгонять размер фотографии под водяной знак.
Учитывая, что на стандартном FullHD-разрешении все-равно все большие фотографии уменьшаются до высоты в 833 пикселя, нет смысла идти по первому пути. Поэтому было решено настроить так, чтобы перед добавлением водяного знака загруженные фотографии уменьшались до 800 пикселей по высоте. Таких настроек в плагине SigPlus не оказалось и пришлось копаться в коде. Выяснилось, что за изменения изображений в SigPlus отвечает файл imagegenerator.php, который лежит в папке /plugins/content/sigplus/core/. В этом файле есть 3 места, в которых прописано добавление водяного знака. Видимо, для разных библиотек свой сценарий. На нашем портале библиотека указана «По умолчанию», поэтом у нас сработали правки в первом месте. У вас, возможно, правки нужно будет делать в другом месте.
Собственно, решение заключается в добавлении 1 строчки кода:
$source_img = imagescale( $source_img, imagesx($source_img)*(800/imagesy($source_img)), 800 );
Функция imagescale принимает 3 параметра: ссылку на фотографию и желаемые размеры по ширине и высоте. И возвращает уже масштабированную фотографию. В нашем случае, фотография просто пересохраняется в исходный файл. Высота указана 800 пикселей, а для ширины высчитывается пропорциональное значение.
Да, в нашем случае этот код нужно было добавить в 640 строку файла imagegenerator.php после следующего кода:
// load image
$source_img = self::imageFromFile($image_path, $orientation);
if (!$source_img) {
return false; // could not create image from file
}
Если у вас используется другая библиотека, то ищите свое место по комментарию
// load watermark image
Спасибо сказали: Александр Новиков, Сергей Манжула, AlexPlus, Виктор Таран, Лисичанск Ситилисичанск
Пожалуйста Войти , чтобы присоединиться к беседе.
У Вас нет прав доступа к этому разделу форума
Скорее всего Вы не оплатили или не продлили подписку
У Вас появится доступ к этому разделу форума только при активной подписке на любой тарифный план