greyhard
@greyhard
Программист, автолюбитель

Вставка водяных знаков в фото

Подскажите как лучше сделать вставку водных знаков в фото

  1. Генерировать все фото заранее с наложение водных знаков
  2. Генерировать фото на лету при помощи скрипта
  3. Написать свой модуль для Nginx/Apache для обработки фото


2,3 вариант естественно с кешированием с генерированных фото. для исключения повторной обработки.

Все дело в том что надо хранить одновременно фото со знаком и без знака.
  • Вопрос задан
  • 4735 просмотров
Решения вопроса 1
Ogra
@Ogra
Если у вас с C/C++ лучше, чем с PHP/Ruby/Python (или на чем вы пишете серверную часть), то — пункт №3.
Если у вас скилл на серверный язык выше или равен C/C++ — то разумеется второй вариант.
Ответ написан
Пригласить эксперта
Ответы на вопрос 5
Тоже за второй вариант. Здесь на хабре уже рассматривалось, как сделать водяной знак.
Ответ написан
Комментировать
@Masterkey
вы сами ответили на свой вопрос: хранить два экземпляра (исходный за пределами веб дирректории), с водяним знаком в целевой.
обрабатывать фотки в процессе добавления: добавили новый товар, сохранили исходное изображение, наложили знак, сохранили.

вобщем KISS
Ответ написан
Комментировать
@the_ghost
Как делал я.
1. В .htaccess написал rewriterule, чтобы все обращения к картинкам передавались в специальный php-скрипт.
2. Скрипт проверял, есть ли в кеше картинка с водяным знаком
2.1 Если есть, то через readfile() отдавал эту картинку
2.2 Если нет, то накладываем знак и сохраняем в кеш. Выводим опять же, через readfile()

А вот и правило для .htaccess
RewriteCond %{REQUEST_URI} \.(jpeg|jpg)
RewriteCond %{HTTP_REFERER} !textpattern
RewriteRule \.(jpeg|jpg) /images/watermark/index.php [NC]

Проверяем, чтобы это была картинка jpg или jpeg…
… чтобы эта картинка не была запрошена из-под админки и…
… отправляем в скрипт запрос

В скрипте картинка доступна в $_SERVER['REQUEST_URI']
Ответ написан
Комментировать
yadeveloper
@yadeveloper
Безусловно нужно генерировать картинки с watermark по мере их поступления (можно и delayed, если картинок много) — но не по мере запроса. На лету — рискуете заиметь «больно».

Я бы написал скрипт для крона, который забирает по find все файлы, с последней модификацией меньше либо равно таймауту вызова самого крон-рула, и далее использовал консольный imagik. Он с этой задачей справляется на ура.

Итого — решение вашей задачи вмещается в одну строку
Ответ написан
Комментировать
opium
@opium
Просто люблю качественно работать
выберите первый вариант и не парьтесь
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы