「Python|图像处理|场景案例」如何给图片添加水印

本文主要介绍如何使用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:
	"""执行上述代码的操作即可"""

处理效果展示

本案例中处理完的图片效果如下:
在这里插入图片描述

附录:简单快速添加常见水印

上面介绍的添加水印方式更偏向于一些对水印内容和位置要求高的场景。对于我们平常比如个人信息图片打水印的简单情况,可以有简单快速的方法,如下:
python -m pip install filestools

from watermarker.marker import add_mark

add_mark(
    file="D:/source.jpg",
    out="D:/image_with_mark",
    mark="仅供XXXX进行实名认证",
    opacity=0.2,
    angle=30,
    space=70,
    color="#FFFFFF",
)

好书推荐:

好课推荐:

写文不易,如果对你有帮助的话,来一波点赞、收藏、关注吧~👇

  • 6
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

明仔的阳光午后

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值