本文主要介绍如何使用python的PIL库给图片增加水印
文章目录
- 背景说明
- 工具准备
- 处理步骤
- 源代码
- 处理效果展示
背景说明
- 当我们想给一些图片添加水印的时候,尤其是图片数量较多的时候,就可以使用python进行自动化处理。
- 包括但不限于在自媒体上发布自己的各种画稿、摄影作品、宣传作品等等。
工具准备
- 使用如下pip命令安装所需要的python第三方库PIL:
python3 -m pip install --upgrade Pillow
- 到谷歌字体下载我们希望使用的水印字体到本地
- 本案例使用Explora字体,字体文件放在
E:/
目录下 - 准备一张要添加水印的图片,本案例使用以下图片,图片同样放在
E:/
目录下
处理步骤
通过python给图片增加水印的步骤如下:
- 打开我们所需要添加水印的图片
- 在图片上增加一层蒙版(或者说画布好理解一些?)
- 在画布上增加我们想要添加的水印内容,包括但不限于
- 文本
- 颜色
- 字体
- 透明度
- 保存图片
源代码
from PIL import Image, ImageDraw, ImageFont
"""
对应步骤一: 打开图片
由于需要设置透明度, 所以需要图片需要从默认的RGB模式转换成RGBA模式
"""
image_to_process = Image.open('E:/brooch.png').convert("RGBA")
"""
对应步骤二: 在图片上创建一个画布
后续的添加水印就是在带有画布的图片上进行
需要注意的是, 这相当于在图片上贴了了一层画布, 我们的内容是写在画布上, 然后内容会"渗"到图片上
所以我们最终要保存的是图片, 而不是画布
"""
image_could_be_drawed = ImageDraw.Draw(image_to_process)
"""进行步骤三之前,准备好要添加的水印内容"""
"""文本"""
text = "A K I R A"
"""字体, 加载之前下载好的字体, 并设置字体大小为128"""
font = ImageFont.truetype("E:/Explora-Regular.ttf", 128)
"""
水印内容放在图片中的哪个位置
这里通过image_to_process.size获取图片大小, 这里是(1024, 1024)
然后除以2, 使得水印内容从正中间开始
由于是从正中间开始写水印文本, 所以水印位置是中间偏右
"""
location = tuple(location // 2 for location in image_to_process.size)
"""字体颜色, RGBA"""
fill_color_RGBA = (254, 223, 225, 179)
"""对应步骤三: 将水印内容怼到图片上"""
image_could_be_drawed.text(location, text, font=font, fill=fill_color_RGBA)
"""让图片显示出来, 看看效果"""
image_to_process.show()
"""对应步骤四: 保存图片到本地"""
image_to_process.save('E:/image_withmark.png')
以上就是给图片增加水印的处理,需要批量处理的时候,如下循环操作即可:
import os
all_images = os.listdir("E:/images/")
for image in all_images:
"""执行上述代码的操作即可"""
处理效果展示
本案例中处理完的图片效果如下: