方法一
提前安装第三方库,安装PIL库(Pillow):在命令行中输入pip install pillow进行安装;
将此py文件放入根目录,另外根目录中有三个文件夹,watermark(水印文件夹)、original(需加水印图片的文件夹)、output(成品文件夹)
- from PIL import Image, ImageDraw
- import os, random
-
- water_path = './watermark' # 水印文件夹路径
- watermark_list = os.listdir(water_path)
-
- def do(file_name):
- # 打开原始图片和水印图片
- original_image = Image.open(file_name)
- random_mark = random.choice(watermark_list) # 选择随机水印图片
- # print(random_mark)
- watermark_image = Image.open(f'{water_path}/{random_mark}')
-
- # 将水印图片缩放到合适的大小
- watermark_width, watermark_height = watermark_image.size
- base_width, base_height = original_image.size
-
- watermark_image = watermark_image.resize((base_width,int(base_width/watermark_width*watermark_height)))
-
- # 创建一个和原始图片相同大小的空白画布
- canvas = Image.new('RGBA', original_image.size)
-
- # 将原始图片粘贴到画布上
- canvas.paste(original_image, (0, 0))
-
- # 将水印图片粘贴到画布上
- canvas.paste(watermark_image, (0, 0))
-
- # 保存带有水印的图片
- name = file_name.split("\")[-1]
- canvas.save(f'./output/do_{name}') # 成品保存路径
- print(f">>>> {name} 添加 {random_mark} 水印 成功。")
-
-
- for root, dirs, files in os.walk("./original"): # 需要加水印的文件夹路径
- for name in files:
- file_name = os.path.join(root, name)
- do(file_name)
- from PIL import Image, ImageDraw, ImageFont
-
- def add_watermark(input_image_path, output_image_path, watermark_text):
- # 打开原始图片
- base_image = Image.open(input_image_path).convert("RGBA")
-
- # 创建一个可以在给定图像上绘图的对象
- draw = ImageDraw.Draw(base_image)
-
- # 设置字体和大小
- font = ImageFont.truetype("arial.ttf", 15) # 水印文字的字体,大小,这是英文字体不支持中文,换成自己的字体即可
-
- # 在图片上添加水印,设置水印位置和颜色等
- draw.text((20,20), watermark_text, fill=color, font=font)
-
- # 保存带有水印的图片
- base_image.save(output_image_path)
-
- # 使用示例
- add_watermark("../img-test/orig.jpg", # 需加水印的图片
- "../img-test/orig--out.png", # 最终的图片
- "Watermark Text") # 水印文字
- from PIL import Image
-
- # 打开背景图片和水印图片
- background = Image.open('../img-test/orig.jpg') # 需加水印的图片
- watermark = Image.open('../img-test/mark.png').convert("RGBA") # 透明背景的水印图片
-
-
- # 将水印图片粘贴到背景图片上
- background.paste(watermark, (0, 0),mask=watermark) # 水印位置(0,0)
-
- # 保存合并后的图片
- background.save('../img-test/orig_mark.png')