Как ставить водяные знаки на изображениях при помощи Python

Если вы ищите фотографии в интернете, вы могли заметить, что многие из них доступны только с ватермарками. Ватермарк – это определенный текст или логотип, нанесенный на фотографию, цель которого – сказать, кто сделал фотографию, и кому принадлежат права на него. Многие профессионалы рекомендуют ставить водяные знаки на своих фотографиях прежде, чем выкладывать их в социальных сетях, чтобы третьи лица не могли их использовать для своих нужд и выгоды. Конечно, водяной знак легко можно стереть, так что это не настолько эффективный инструмент, как авторское право. В любом случае, пакет Pillow предоставляет необходимые инструменты для добавления водяных знаков на ваши фотографии. Для начала, нам нужно установить Pillow, если вы этого еще не сделали:

Приступим!

Добавляем текстовый водяной знак

Начнем мы с добавления просто текста на фотографию маяка. Для примера возьмем вот эту:

Как ставить водяные знаки на изображениях при помощи Python

Теперь нам нужно добавить текст на картинку. В нашем случае, используем этот домен: www.mousevspython.com

Здесь мы импортируем несколько классов из PIL: Image, ImageDraw и ImageFont. Далее, мы создаем функцию watermark_text, которая использует четыре аргумента:

  • Путь ввода изображения;
  • Путь вывода изображения;
  • Текст, который будет использован;
  • Координаты позиционирования текста на изображении.

Далее, мы открываем наше фото. Создаем его копию при помощи метода ImageDraw.Draw. Это упрощает добавление текста на изображение. Далее, создаем шрифт при помощи метода ImageFont.truetype. Используются только шрифты, доступные в библиотеке Pillow. Указываем размер шрифта – 40 точек. Наконец, открываем результат и сохраняем на диск:

Как ставить водяные знаки на изображениях при помощи Python

Теперь попробуем вместо текста добавить картинку!

Используем картинку как водный знак

Многие профессиональные фотографы ставят ватермарки на свои фотографии, используя для этого логотип. Иногда это стилизованная «фото» версия их сайта. Добавление изображения поверх изображения при помощи Pillow — это очень просто. Давайте посмотрим на то, как это сделать.

В данном примере используем один из моих логотипов в качестве ватермарка.

 

Здесь мы создали функцию, которая очень похожа на функцию из предыдущего раздела, но вместо передачи текста, мы передаем путь к файлу водного знака. В функции мы открываем наше фото и необходимое для водяного знака изображение, логотип. Далее, мы берем наше фото и вызываем его метод paste(), указываем ему, что именно мы хотим передать (в нашем случае – водяной знак) и позицию на фотографии, где будет размещен наш водяной знак. Наконец, мы открываем картинку и сохраняем её. Вот результат:

Как ставить водяные знаки на изображениях при помощи Python

Как мы видим, результат не совсем оправдывает ожидания. Черный фон на изображении закрывает слишком много места, а нам это не нужно. Как так получилось? Ответ прост: мы не указали параметры прозрачности.

Есть вопросы по Python?

На нашем форуме вы можете задать любой вопрос и получить ответ от всего нашего сообщества!

Telegram Чат & Канал

Вступите в наш дружный чат по Python и начните общение с единомышленниками! Станьте частью большого сообщества!

Паблик VK

Одно из самых больших сообществ по Python в социальной сети ВК. Видео уроки и книги для вас!

Нанесение водяных знаков – не забываем про прозрачность

Давайте создадим новую функцию, которая может использовать прозрачность, при помощи которой мы избавимся от темных пятен под водяным знаком. Решение этой проблемы я нашел в виде инструмента StackOverflow, который я использую и модифицирую для нашего примера.

В данном коде мы берем все те же аргументы, которые мы использовали в предыдущем примере. Но на этот раз, мы не будем открывать оба изображения, но ширину и высоту фотографии, на которую будет нанесен водяной знак. Обратите внимание на то, что тип изображения, которое мы создаем – RGBA (Red, Green, Blue with Alpha — красный, зеленый, синий и альфа). Далее, мы вставляем наш водяной знак в верхний левый угол, чьи координаты указаны как: (0,0). Далее, мы вставляем наш водяной знак, используя указанную позицию, а также маскируем его. После этого можно сохранять фотографию.

Вот так будет выглядеть результат:

Как ставить водяные знаки на изображениях при помощи Python

Круто, не так ли?

Подведем итоги

В данной статье мы рассмотрели два разных способа нанесения водяных знаков на ваши фотографии в Python. В первом примере мы добавили текст к фотографии. Во втором, в качестве водяного знака использовалось изображение, но забыли про прозрачность. После этого мы исправили эту проблему в третьем примере. Надеюсь, эти примеры помогут вам в будущем. Счастливого кодинга!

Готовые шаблоны для Adobe After Effects для хостинговой компании Web Hosting Explainer для главной страницы. Видео описание вашего хостинга даст более продуктивный результат нежели текстовое объяснение.