Как добавить водяной знак к изображениям с помощью Python: подробное руководство

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

Метод 1: использование библиотеки Pillow
Pillow — это популярная библиотека Python для задач обработки изображений. Чтобы добавить водяной знак с помощью Pillow, выполните следующие действия:

from PIL import Image, ImageDraw, ImageFont
def add_watermark(image_path, watermark_text, output_path):
    # Open the image
    image = Image.open(image_path)

    # Create a transparent layer for the watermark
    transparent = Image.new('RGBA', image.size, (0, 0, 0, 0))

    # Load a font for the watermark
    font = ImageFont.truetype('arial.ttf', 40)

    # Create a drawing object
    draw = ImageDraw.Draw(transparent)

    # Calculate the position to place the watermark
    text_width, text_height = draw.textsize(watermark_text, font)
    x = (image.width - text_width) // 2
    y = (image.height - text_height) // 2

    # Draw the watermark text on the transparent layer
    draw.text((x, y), watermark_text, font=font, fill=(128, 128, 128, 128))

    # Merge the original image with the watermark layer
    watermarked = Image.alpha_composite(image.convert('RGBA'), transparent)

    # Save the watermarked image
    watermarked.save(output_path)
# Example usage
add_watermark('image.jpg', 'Sample Watermark', 'output.jpg')

Метод 2: использование библиотеки OpenCV
OpenCV — это мощная библиотека компьютерного зрения, которую также можно использовать для нанесения водяных знаков на изображения. Вот пример использования OpenCV:

import cv2
def add_watermark(image_path, watermark_text, output_path):
    # Read the image
    image = cv2.imread(image_path)

    # Define the font properties
    font = cv2.FONT_HERSHEY_SIMPLEX
    font_scale = 1.0
    color = (0, 0, 255)  # Red color

    # Calculate the position to place the watermark
    text_width, text_height = cv2.getTextSize(watermark_text, font, font_scale, 1)[0]
    x = (image.shape[1] - text_width) // 2
    y = (image.shape[0] - text_height) // 2

    # Add the watermark text to the image
    cv2.putText(image, watermark_text, (x, y), font, font_scale, color, 2)

    # Save the watermarked image
    cv2.imwrite(output_path, image)
# Example usage
add_watermark('image.jpg', 'Sample Watermark', 'output.jpg')

Метод 3. Использование библиотеки Pygame
Если вам нужен более интерактивный подход, вы можете использовать библиотеку Pygame для добавления водяных знаков к изображениям. Вот пример:

import pygame
from pygame.locals import *
def add_watermark(image_path, watermark_text, output_path):
    # Initialize Pygame
    pygame.init()

    # Load the image
    image = pygame.image.load(image_path)

    # Create a Pygame font object
    font = pygame.font.SysFont('Arial', 40)

    # Render the watermark text
    text_surface = font.render(watermark_text, True, (128, 128, 128, 128))

    # Calculate the position to place the watermark
    x = (image.get_width() - text_surface.get_width()) // 2
    y = (image.get_height() - text_surface.get_height()) // 2

    # Blit the text surface onto the image
    watermarked = image.copy()
    watermarked.blit(text_surface, (x, y))

    # Save the watermarked image
    pygame.image.save(watermarked, output_path)
# Example usage
add_watermark('image.jpg', 'Sample Watermark', 'output.jpg')

В этой статье мы рассмотрели три различных метода добавления водяных знаков к изображениям с помощью Python. Библиотека Pillow предоставляет полный набор инструментов для обработки изображений, а OpenCV предлагает мощные возможности компьютерного зрения. Если вы предпочитаете более интерактивный подход, Pygame позволяет добавлять водяные знаки с помощью графического интерфейса. Используя эти методы, вы сможете защитить свои изображения и обеспечить правильную атрибуцию.