当前位置: 无忧屋首页 > 文章中心 > Python >

分享三种Python批量图片添加随机水印方法

来源:网络

发布人:天道酬勤

发布时间:2024-01-23

方法一
提前安装第三方库,安装PIL库(Pillow):在命令行中输入pip install pillow进行安装;
将此py文件放入根目录,另外根目录中有三个文件夹,watermark(水印文件夹)、original(需加水印图片的文件夹)、output(成品文件夹)

  1. from PIL import Image, ImageDraw
  2. import os, random
  3.   
  4. water_path = './watermark'  #  水印文件夹路径
  5. watermark_list = os.listdir(water_path)
  6.   
  7. def do(file_name):
  8.     # 打开原始图片和水印图片
  9.     original_image = Image.open(file_name)
  10.     random_mark = random.choice(watermark_list)  # 选择随机水印图片
  11.     # print(random_mark)
  12.     watermark_image = Image.open(f'{water_path}/{random_mark}')
  13.   
  14.     # 将水印图片缩放到合适的大小
  15.     watermark_width, watermark_height = watermark_image.size
  16.     base_width, base_height = original_image.size
  17.   
  18.     watermark_image = watermark_image.resize((base_width,int(base_width/watermark_width*watermark_height)))
  19.   
  20.     # 创建一个和原始图片相同大小的空白画布
  21.     canvas = Image.new('RGBA', original_image.size)
  22.   
  23.     # 将原始图片粘贴到画布上
  24.     canvas.paste(original_image, (0, 0))
  25.   
  26.     # 将水印图片粘贴到画布上
  27.     canvas.paste(watermark_image, (0, 0))
  28.   
  29.     # 保存带有水印的图片
  30.     name = file_name.split("\")[-1]
  31.     canvas.save(f'./output/do_{name}')  # 成品保存路径
  32.     print(f">>>>  {name} 添加  {random_mark}  水印  成功。")
  33.   
  34.   
  35. for root, dirs, files in os.walk("./original"):  # 需要加水印的文件夹路径
  36.     for name in files:
  37.         file_name = os.path.join(root, name)
  38.         do(file_name)
方法二
  1. from PIL import Image, ImageDraw, ImageFont
  2.   
  3. def add_watermark(input_image_path, output_image_path, watermark_text):
  4.     # 打开原始图片
  5.     base_image = Image.open(input_image_path).convert("RGBA")
  6.   
  7.     # 创建一个可以在给定图像上绘图的对象
  8.     draw = ImageDraw.Draw(base_image)
  9.   
  10.     # 设置字体和大小
  11.     font = ImageFont.truetype("arial.ttf", 15)  # 水印文字的字体,大小,这是英文字体不支持中文,换成自己的字体即可
  12.   
  13.     # 在图片上添加水印,设置水印位置和颜色等
  14.     draw.text((20,20), watermark_text, fill=color, font=font)
  15.   
  16.     # 保存带有水印的图片
  17.     base_image.save(output_image_path)
  18.   
  19. # 使用示例
  20. add_watermark("../img-test/orig.jpg",  # 需加水印的图片
  21.               "../img-test/orig--out.png",   # 最终的图片
  22.               "Watermark Text")  # 水印文字
方法三
  1. from PIL import Image
  2.   
  3. # 打开背景图片和水印图片
  4. background = Image.open('../img-test/orig.jpg')  # 需加水印的图片
  5. watermark = Image.open('../img-test/mark.png').convert("RGBA")  # 透明背景的水印图片
  6.   
  7.   
  8. # 将水印图片粘贴到背景图片上
  9. background.paste(watermark, (0, 0),mask=watermark)  # 水印位置(0,0)
  10.   
  11. # 保存合并后的图片
  12. background.save('../img-test/orig_mark.png')

免责声明:文中图文均系网友发布,转载来自网络,如有侵权请联系右侧客服QQ删除,无忧屋网友发布此文仅为传递信息,不代表无忧屋平台认同其观点。