13.python为图片添加水印

本文分享一个python批量为图片添加文字水印的方法,用到的库为pillow

如果没有,请先下载:

pip install pillow

用到里面的三个类:

from PIL import Image,ImageDraw,ImageFont

同时需要一些文件处理,所以还需要这两个库:

import os,shutil

该程序的主要逻辑是:

  1. 获取目标目录内的所有png图片(可自行更改)
  2. 将所有图片进行备份,复制到目标文件夹下的back文件夹中
  3. 然后调用Pillow库,对图片进行处理

源码:

from PIL import Image,ImageDraw,ImageFont
import os,shutil

path=input("要添加水印的图片路径:")
#构建备份文件夹
back=os.path.join(path,"back")
if not os.path.exists(back):
    os.mkdir(back)
#构建目标文件夹下所有图片的绝对路径
ls=[] #存放图片路径
for png in os.listdir(path):
    f=os.path.join(path,png)
    if not f.endswith(".png"): #只操作png图片
        continue
    ls.append(f)
    shutil.copyfile(f,os.path.join(back,png))
    print("正在备份图片:",f)
print("共备份图片:",len(ls))

print("开始添加水印……")

for f in ls:
    print("正在处理:",f)
    im=Image.open(f)
    draw=ImageDraw.Draw(im)
    text="www.ityushi.cn"
    font=ImageFont.truetype("arial.ttf",28)
    fsi=font.getbbox("www.ityushi.cn")
    draw.text((im.size[0]-fsi[2],im.size[1]-fsi[3]),text=text,font=font,fill=255)
    im.save(f)
    
print("共处理:{}张图片".format(len(ls)))

图片处理流程为:

  • Image.open:打开目标图像文件,返回图像对象
  • ImageDraw.Draw:通过上一个函数返回的图像对象,构建绘图对象
  • ImageFont.truetype:构建字体对象,第一个参数为字体文件,第二个参数为字体大小
  • font.getbbox:返回目标文字的大小,为4个元素的元组,由于左上角为原点,所以第三个参数为字体的宽,第4个参数为字体的高
  • draw.text:开始在图像上写文字,其参数分别为:(x,y)元组坐标,文本,字体,颜色
作者:余识
全部文章:0
会员文章:0
总阅读量:0
c/c++pythonrustJavaScriptwindowslinux