背景描述
在写文章的时候,经常需要用到一些图,为了访问被别人盗图,通常的做法是给图片添加水印。
本文分享如何使用python批量给图片添加水印。
界面展示
软件的界面如下:
软件的效果如下:
功能介绍
1. 支持单张图片处理
2. 支持文件夹处理
3. 支持的图片格式有PNG、JPEG、JPG
4. 编辑水印内容
5. 图片本地保存
使用说明
1. 单张图片处理
软件的默认模式就是单张图片处理,可以通过菜单->模式->单张图片切换,具体步骤如下:
1. 选择需要添加水印的图片
2. 编辑水印的内容
3. 点击生成水印
4. 保存图片
2. 多张图片处理
通过菜单->模式->多张图片切换,具体步骤如下:
1. 选择图片文件夹
2. 编辑水印的内容
3. 添加水印,同时会保存图片,保存的图片在选择的文件中,以"water_"开头
核心代码
水印的核心代码就是图片处理,需要安装 PIL
sudo pip install pillow
具体的水印处理代码如下:
from PIL import Image, ImageDraw, ImageFont
class Water:
@staticmethod
def add_water(image_path, text):
image = Image.open(image_path)
font = ImageFont.truetype('../font/PingFang.ttc', 36)
mode = "RGBA"
# 创建背景并黏贴图片,居中
background = Image.new(mode, (image.size[0] * 3, image.size[1] * 3), (0, 0, 0, 0))
background.paste(image, image.size)
text_len = len(text)
# 转化模式
rgba_image = background.convert(mode)
# 创建水印层,这个层要大,旋转之后位置变化大
text_overlay = Image.new(mode, rgba_image.size, (255, 255, 255, 0))
# 创建一个会话对象
image_draw = ImageDraw.Draw(text_overlay)
# 绘制水印
for i in range(0, rgba_image.size[0], text_len * 40 + 100):
for j in range(0, rgba_image.size[1], 200):
image_draw.text((i, j), text, font=font, fill=(0, 0, 0, 100))
text_overlay = text_overlay.rotate(45)
# 融合
water_image = Image.alpha_composite(rgba_image, text_overlay)
# 裁剪 因为前面扩大了两倍,这里裁剪一个矩形
water_image = water_image.crop((image.size[0], image.size[1], image.size[0] * 2, image.size[1] * 2))
return water_image
想要获取源码,请关注+转发,然后私信我!
下一篇文章:用Python实现下载抖音分享视频