图片自定义水印

171 阅读2分钟

本文所涉及所有资源均在传知代码平台可获取。

概述

PIL是Python的第三方图像处理库,其中Image模块作为PIL库的基本核心类,可以用来例如加载图像和创建新图像等用途,而说到给在图片上添加水印,要用到的方法就是ImageDraw.Draw.text(),里面有包括6个参数,其中经常被用到的也就下面四个

xy:添加水印的坐标,x坐标和y坐标

text:具体添加水印的文本内容

fill:水印样式,包括颜色、透明度等

font:字体大小

演示效果

原始图片

添加水印

核心逻辑

from PIL import Image, ImageDraw, ImageFont

def add_watermark(input_image_path, output_image_path, watermark_text, font_path, position=(1, 1), font_size=40):
    """=
    在图片上添加水印
    :param input_image_path: 图片路径
    :param watermark_text: 水印文本
    :param font_path: 字体文件路径
    :param font_size: 字体大小,默认为 40
    :param opacity: 水印透明度,默认为 0.5
    :param fill: 水印颜色,默认为白色半透明
    """
    # 打开图像
    im = Image.open(input_image_path)

    # 创建一个可用于绘制的对象
    draw = ImageDraw.Draw(im)

    # 设置字体
    # font = ImageFont.load_default()  # 使用默认字体,中文有问题
    font = ImageFont.truetype(font_path, font_size)

    # 计算文本的位置(适配不同大小图片的位置)
    image_width, image_height = im.size
    text_bbox = draw.textbbox((0, 0), watermark_text, font=font)
    text_width, text_height = text_bbox[2] - text_bbox[0], text_bbox[3] - text_bbox[1]
    x = int((image_width - text_width) * position[0])
    y = int((image_height - text_height) * position[1])

    # 添加水印
    draw.text((x, y), watermark_text, font=font)

    # 保存图像
    im.save(output_image_path)

# 使用示例,将文本放在右下角
add_watermark('dog.png', 'watermarked_image.png', '传知科技|wiswing', 'simsun.ttc', position=(1, 1), font_size=40)

使用方式

1、上传原始图片

2、输入要添加的水印文字

3、选择水印的相对位置(可选)

#左上角
position = (0, 0)
#左下角
position = (0, 1)
#中间
position = (0.5, 0.5)
#右上角
position = (1, 0)
#右下角
position = (1, 1)

部署方式

python add-watermark.py

感觉不错,[点击我](www.aspiringcode.com/content?id=…