利用 Python 实现图片批量水印添加实战

一、引言

在当今数字化时代,图片作为重要的信息载体和传播媒介,我们常常需要对其进行各种处理。比如为了保护版权、标识来源等,给图片添加水印是一个常见的操作。手动一张一张地添加水印效率极低,而利用 Python 结合相关库则可以轻松实现批量添加水印的功能。本文将详细介绍如何使用 Python 实现这一操作,让你在实际工作和生活中能更高效地处理图片。

二、准备工作

  1. 安装必要的库:我们主要使用Pillow库来进行图片处理操作。如果还没有安装,可以使用pip命令进行安装,在命令行中输入pip install pillow即可。
  2. 准备水印图片和待处理图片:准备一张合适的水印图片(比如一个透明背景的 logo 图片),格式可以是png等支持透明通道的格式。同时,准备好你需要添加水印的一批图片,将它们放在一个文件夹中,方便后续处理。

三、Python 代码实现

下面是实现图片批量添加水印的 Python 代码:

收起

python

from PIL import Image

def add_watermark(image_path, watermark_path, output_path):
    """
    给单个图片添加水印的函数

    :param image_path: 待处理图片的路径
    :param watermark_path: 水印图片的路径
    :param output_path: 处理后图片的保存路径
    """
    base_image = Image.open(image_path)
    watermark = Image.open(watermark_path)

    # 获取图片和水印的尺寸
    base_width, base_height = base_image.size
    watermark_width, watermark_height = watermark.size

    # 计算水印在图片上的位置(这里简单地放在右下角)
    position = (base_width - watermark_width, base_height - watermark_height)

    # 将水印粘贴到图片上
    base_image.paste(watermark, position, watermark)

    # 保存处理后的图片
    base_image.save(output_path)

def batch_add_watermark(image_folder, watermark_path, output_folder):
    """
    批量给图片添加水印的函数

    :param image_folder: 待处理图片所在文件夹路径
    :param watermark_path: 水印图片的路径
    :param output_folder: 处理后图片保存的文件夹路径
    """
    import os
    for root, dirs, files in os.walk(image_folder):
        for file in files:
            if file.lower().endswith(('.png', '.jpg', '.jpeg')):
                image_path = os.path.join(root, file)
                relative_path = os.path.relpath(image_path, image_folder)
                output_sub_folder = os.path.join(output_folder, os.path.dirname(relative_path))
                os.makedirs(output_sub_folder, exist_ok=True)
                output_file = os.path.join(output_sub_folder, file)
                add_watermark(image_path, watermark_path, output_file)

# 示例调用
image_folder = 'your_image_folder_path'  # 替换为实际的待处理图片文件夹路径
watermark_path = 'your_watermark_image_path'  # 替换为实际的水印图片路径
output_folder = 'your_output_folder_path'  # 替换为实际的输出文件夹路径
batch_add_watermark(image_folder, watermark_path, output_folder)

四、代码解释

  1. add_watermark函数
    • 首先使用Image.open方法分别打开待处理图片和水印图片。
    • 获取图片和水印的尺寸,用于计算水印在图片上的位置。这里简单地将水印放在图片的右下角。
    • 使用paste方法将水印粘贴到图片上,paste方法的第三个参数watermark表示使用水印图片的透明度信息,这样可以保证水印的透明部分不会遮挡图片内容。
    • 最后使用save方法保存处理后的图片。
  2. batch_add_watermark函数
    • 使用os.walk遍历待处理图片文件夹及其子文件夹中的所有文件。
    • 筛选出图片文件(根据文件扩展名判断)。
    • 构建输出文件的路径,包括创建相应的输出文件夹结构。
    • 调用add_watermark函数对每个图片进行水印添加操作。

五、总结

通过以上步骤,我们利用 Python 的Pillow库成功实现了图片的批量水印添加功能。在实际应用中,你可以根据需求调整水印的位置、大小、透明度等参数,以达到更好的效果。希望这篇文章能对你在图片处理方面的工作和学习有所帮助,让你能更高效地利用 Python 解决实际问题。

注意,在实际使用时,记得将代码中的your_image_folder_pathyour_watermark_image_pathyour_output_folder_path替换为实际的路径。

你可能感兴趣的:(学习,工作,面试,python,linux,开发语言)