如何用Python批量给图片加水印?

2023-07-04 09:49:00 浏览数 (1254)

你是否想要给你的图片添加一些个性化的水印,以保护你的版权或者展示你的品牌?如果你有很多图片需要处理,手动添加水印可能会很麻烦和耗时。幸运的是,Python可以帮助你快速地批量给图片加水印。在这篇文章中,我将介绍一种简单的方法,使用Python和Pillow库来实现这个功能。

Pillow是一个流行的Python图像处理库,它提供了很多方便的功能,如读取、保存、调整和合成图片。要使用Pillow,你需要先安装它。你可以使用pip命令来安装:

pip install Pillow

安装好Pillow后,你就可以开始编写代码了。首先,你需要导入Pillow库,并定义一些变量,如水印图片的路径、原始图片的文件夹、输出图片的文件夹等。例如:

from PIL import Image


watermark_path = "watermark.png" # 水印图片的路径
source_folder = "source" # 原始图片的文件夹
output_folder = "output" # 输出图片的文件夹

接下来,你需要打开水印图片,并将其转换为RGBA模式,以保留透明度信息。然后,你可以使用os模块来遍历原始图片的文件夹,找到所有的图片文件,并对每一个图片进行处理。例如:

import os


watermark = Image.open(watermark_path).convert("RGBA") # 打开并转换水印图片
watermark_width, watermark_height = watermark.size # 获取水印图片的尺寸


for filename in os.listdir(source_folder): # 遍历原始图片的文件夹
if filename.endswith(".jpg") or filename.endswith(".png"): # 判断是否是图片文件
image_path = os.path.join(source_folder, filename) # 拼接图片文件的路径
image = Image.open(image_path).convert("RGBA") # 打开并转换图片文件
image_width, image_height = image.size # 获取图片文件的尺寸

在处理每一个图片文件时,你需要先计算水印图片在原始图片上的位置。这里我们假设水印图片放在右下角,并留有一定的边距。你可以根据自己的需求来调整这个位置。然后,你可以使用Image.alpha_composite()方法来将水印图片合成到原始图片上,并保存到输出文件夹中。例如:

margin = 10 # 边距
watermark_x = image_width - watermark_width - margin # 水印图片在x轴上的位置
watermark_y = image_height - watermark_height - margin # 水印图片在y轴上的位置


image.paste(watermark, (watermark_x, watermark_y), watermark) # 将水印图片合成到原始图片上
output_path = os.path.join(output_folder, filename) # 拼接输出文件的路径
image.save(output_path) # 保存输出文件

这样,你就完成了批量给图片加水印的功能。你可以运行这段代码,并查看输出文件夹中的结果。你会发现每一张原始图片都被添加了一个水印。

这篇文章只是介绍了一种最基本的方法,你可以根据自己的需求来修改和优化代码,例如调整水印图片的大小、透明度、角度等。希望这篇文章对你有所帮助。