Python添加水印

简介

在数字图像处理中,水印是一种用于保护图像版权和验证图像来源的技术。水印可以是透明的、半透明的或可见的,可以嵌入到图像中的任何位置。在本文中,我们将介绍使用Python添加水印的方法,并提供相应的代码示例。

准备工作

在开始之前,我们需要确保已经安装了Python和所需的图像处理库PIL(Python Imaging Library)。可以使用以下命令安装PIL库:

pip install pillow

添加文字水印

要向图像添加文字水印,我们可以使用PIL库中的ImageDrawImageFont模块。以下是一个示例代码,演示了如何添加文字水印:

from PIL import Image, ImageDraw, ImageFont

def add_text_watermark(image_path, text, output_path):
    # 打开图像
    image = Image.open(image_path)
    draw = ImageDraw.Draw(image)
    
    # 设置水印文本和字体样式
    font = ImageFont.truetype("arial.ttf", 36) # 可以根据需要替换字体文件和字号
    text_width, text_height = draw.textsize(text, font)
    text_position = (image.width - text_width, image.height - text_height)
    
    # 添加水印文本
    draw.text(text_position, text, font=font, fill=(255, 255, 255, 128))
    
    # 保存图像
    image.save(output_path)

# 示例用法
add_text_watermark("input.jpg", "Watermark Text", "output.jpg")

在上面的示例中,我们首先打开图像,然后使用ImageDraw模块创建一个draw对象。接下来,我们选择一个字体样式并计算水印文本的大小和位置。最后,我们使用draw.text()方法添加水印文本,并保存图像。

添加图片水印

除了文字水印之外,我们还可以添加图片水印。以下是一个示例代码,演示了如何添加图片水印:

from PIL import Image

def add_image_watermark(image_path, watermark_path, output_path):
    # 打开图像和水印图像
    image = Image.open(image_path)
    watermark = Image.open(watermark_path)
    
    # 调整水印大小
    watermark_ratio = 0.25 # 水印大小相对于图像的比例
    watermark_width = int(image.width * watermark_ratio)
    watermark_height = int(watermark_height.width * watermark_ratio)
    watermark = watermark.resize((watermark_width, watermark_height))
    
    # 计算水印位置
    watermark_position = (image.width - watermark_width, image.height - watermark_height)
    
    # 添加水印
    image.paste(watermark, watermark_position, mask=watermark)
    
    # 保存图像
    image.save(output_path)

# 示例用法
add_image_watermark("input.jpg", "watermark.png", "output.jpg")

在上面的示例中,我们首先打开图像和水印图像,然后根据比例调整水印的大小。接下来,我们计算水印的位置,并使用image.paste()方法将水印添加到图像中。最后,我们保存图像。

总结

通过使用Python的PIL库,我们可以方便地给图像添加水印。本文介绍了如何添加文字水印和图片水印,并提供了相应的代码示例。根据需要,可以根据实际情况调整字体、水印位置和大小等参数。希望本文对您理解和使用Python添加水印有所帮助!