В современный век цифровых технологий защита ваших изображений от несанкционированного использования или плагиата имеет решающее значение, особенно если вы фотограф, художник или создатель контента. Одним из эффективных способов защитить вашу творческую работу является добавление водяных знаков к вашим изображениям. В этой статье блога мы рассмотрим различные методы добавления водяных знаков к изображениям с помощью 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 позволяет добавлять водяные знаки с помощью графического интерфейса. Используя эти методы, вы сможете защитить свои изображения и обеспечить правильную атрибуцию.