在Python中,可以使用PIL(Python Imaging Library)库或者其更活跃的分支Pillow来给图片添加水印。下面是一个简单的示例,展示如何使用Pillow给图片添加文本水印:
from PIL import Image, ImageDraw, ImageFont# 打开原始图片
image = Image.open("path_to_your_image.jpg")# 创建一个可以在给定图像上绘图的对象
draw = ImageDraw.Draw(image)# 设置字体和字体大小
font = ImageFont.truetype("arial.ttf", 50) # 请确保你有这个字体文件,或者使用系统自带的字体# 设置水印文本和颜色
text = "Your Watermark Text"
textcolor = (255, 255, 255) # 白色# 获取文本的尺寸
textwidth, textheight = draw.textsize(text, font)# 计算文本在图片中的位置
position = ((image.width - textwidth), (image.height - textheight))# 在图片上添加水印
draw.text(position, text, fill=textcolor, font=font)# 保存带有水印的图片
image.save("watermarked_image.jpg")
注意:可能会报以下错误
AttributeError: 'ImageDraw' object has no attribute 'textsize'
是因为最新的Pillow 10.0.0 版本已经删除了这个,先卸载最新的Pillow,再安装Pillow 9.5.0版本就好
如果你想要添加图片作为水印,可以稍微修改上面的代码,如下所示:
from PIL import Image# 打开原始图片
base_image = Image.open("path_to_your_image.jpg")# 打开水印图片
watermark = Image.open("path_to_your_watermark.png").convert("RGBA")# 调整水印图片的大小
watermark = watermark.resize((100, 100)) # 根据需要调整大小# 将水印图片放置在原始图片的右下角
position = (base_image.width - watermark.width, base_image.height - watermark.height)# 合并原始图片和水印图片
transparent = Image.new('RGBA', base_image.size, (0,0,0,0))
transparent.paste(base_image, (0,0))
transparent.paste(watermark, position, mask=watermark)# 转换回RGB模式以保存为JPG格式
result_image = transparent.convert('RGB')# 保存带有水印的图片
result_image.save("watermarked_image.jpg")
以上代码分别展示了如何使用文本和图片作为水印,并将它们添加到原始图片上。请根据你的具体需求进行相应的调整。