Pillow为图片添加水印

Pillow 库提供了添加水印的方法,操作简单,易学、易用。
水印是附着在原图片上一段文字信息,因此添加水印的过程中会涉及两个问题:

第一、如何使文字信息附着在图片上;

第二、如何绘制文字信息。只要解决了这两个问题就可以成功添加水印。

Pillow 提供的ImageDraw和ImageFont模块成功解决了上述问题。

ImageDraw

PIL.ImageDraw 模块提供了一系列的绘图方法,通过该模块可以创建一个新的图形,或者在现有的图像上再绘制一个图形,从而起到对原图注释和修饰的作用。

draw = ImageDraw.Draw(im)

上述方法会返回一个 ImageDraw 对象
参数 im 表示 Image 对象。这里我们可以把 Image 对象理解成画布,通过调用 ImageDraw 对象的一些方法,实现了在画布上绘制出新的图形目的。ImageDraw 对象的常用方法如下表所示:

表格中第一个方法 text() 需要与 ImageFont 模块一起使用

绘制矩形图的语法格式如下:

draw.rectangle(xy, fill=None, outline=None)

参数说明如下:
xy:元组参数值,以图像的左上角为坐标原点,表示矩形图的位置、图形大小的坐标序列,形如 ((x1,y1,x2,y2));
fill:矩形图的背景填充色;

outline:矩形图的边框线条颜色

1
2
3
4
5
from PIL import Image, ImageDraw
img = Image.open("D:\\File\\All\\web\\python\\blog\\src=http __pic4.zhimg.com_v2-9428748e22b6e7a563de20aa75a257e3_r.jpg&refer=http __pic4.zhimg.webp")
draw = ImageDraw.Draw(img)
draw.rectangle((0,0,100,100),fill= "blue",outline=(0,0,0))
img.show()

ImageFont

PIL.ImagreFont 模块通过加载不同格式的字体文件,从而在图像上绘制出不同类型的文字,
如 TrueType 和 OpenType 类型的字体。

创建字体对象的语法格式如下:

font = ImageFont.truetype(font=’字体文件路径’, size=字体大小)

如果想要在图片上添加文本,还需要使用 ImageDraw.text() 方法,语法格式如下:
draw.text((x,y), “text”, font, fill)

参数说明如下:
(x,y):图像左上角为坐标原点,(x,y) 表示添加文本的起始坐标位置;
text:字符串格式,要添加的文本内容;
font:ImageFont 对象;
fill:文本填充颜色。下面看一组使用示例,如下所示:

1
2
3
4
5
6
from PIL import Image, ImageDraw,ImageFont
img = Image.open("D:\\File\\All\\web\\python\\blog\\src=http __pic4.zhimg.com_v2-9428748e22b6e7a563de20aa75a257e3_r.jpg&refer=http __pic4.zhimg.webp")
draw = ImageDraw.Draw(img)
font = ImageFont.truetype("C:/Windows/Fonts/FREESCPT.TTF",size=70)
draw.text(xy=(80,50),text='hello',fill="#AAAAFF",font=font)
img.show()

一般可以把这些都写在一个函数里面留一个接口,就好了