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

Table of Contents

背景说明

  • 当我们想给一些图片添加水印的时候,尤其是图片数量较多的时候,就可以使用python进行自动化处理。
  • 包括但不限于在自媒体上发布自己的各种画稿、摄影作品、宣传作品等等。

工具准备

  • 使用如下pip命令安装所需要的python第三方库PIL: python3 -m pip install --upgrade Pillow

  • 谷歌字体下载我们希望使用的水印字体到本地

  • 本案例使用Explora字体,字体文件放在E:/目录下

  • 准备一张要添加水印的图片,本案例使用以下图片,图片同样放在E:/目录下


在这里插入图片描述

处理步骤

通过python给图片增加水印的步骤如下:

  • 打开我们所需要添加水印的图片
  • 在图片上增加一层蒙版(或者说画布好理解一些?)
  • 在画布上增加我们想要添加的水印内容,包括但不限于
    • 文本
    • 颜色
    • 字体
    • 透明度
  • 保存图片

源代码

1from PIL import Image, ImageDraw, ImageFont 2 3""" 4对应步骤一: 打开图片 5由于需要设置透明度, 所以需要图片需要从默认的RGB模式转换成RGBA模式 6""" 7image_to_process = Image.open('E:/brooch.png').convert("RGBA") 8 9 10""" 11对应步骤二: 在图片上创建一个画布 12后续的添加水印就是在带有画布的图片上进行 13需要注意的是, 这相当于在图片上贴了了一层画布, 我们的内容是写在画布上, 然后内容会"渗"到图片上 14所以我们最终要保存的是图片, 而不是画布 15""" 16image_could_be_drawed = ImageDraw.Draw(image_to_process) 17 18 19"""进行步骤三之前,准备好要添加的水印内容""" 20"""文本""" 21text = "A K I R A" 22"""字体, 加载之前下载好的字体, 并设置字体大小为128""" 23font = ImageFont.truetype("E:/Explora-Regular.ttf", 128) 24""" 25水印内容放在图片中的哪个位置 26这里通过image_to_process.size获取图片大小, 这里是(1024, 1024) 27然后除以2, 使得水印内容从正中间开始 28由于是从正中间开始写水印文本, 所以水印位置是中间偏右 29""" 30location = tuple(location // 2 for location in image_to_process.size) 31"""字体颜色, RGBA""" 32fill_color_RGBA = (254, 223, 225, 179) 33 34"""对应步骤三: 将水印内容怼到图片上""" 35image_could_be_drawed.text(location, text, font=font, fill=fill_color_RGBA) 36 37"""让图片显示出来, 看看效果""" 38image_to_process.show() 39 40"""对应步骤四: 保存图片到本地""" 41image_to_process.save('E:/image_withmark.png')

以上就是给图片增加水印的处理,需要批量处理的时候,如下循环操作即可:

1import os 2 3all_images = os.listdir("E:/images/") 4for image in all_images: 5 """执行上述代码的操作即可"""

处理效果展示

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

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

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

1from watermarker.marker import add_mark 2 3add_mark( 4 file="D:/source.jpg", 5 out="D:/image_with_mark", 6 mark="仅供XXXX进行实名认证", 7 opacity=0.2, 8 angle=30, 9 space=70, 10 color="#FFFFFF", 11)

好书推荐:

好课推荐:

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

Mastodon