Python入门100题之027:图片批量添加全屏水印

题目:
给同一个目录所有图片添加全屏水印

视频教程:

Python入门100题之027:图片批量添加全屏水印

代码1:

from pathlib import Path

from PIL import Image, ImageDraw, ImageFont


def add_text(image_file: Path):
    my_image = Image.open(image_file)
    # 图像先转为 RGBA 图像
    image_layer = my_image.convert('RGBA')

    # 生成与主图片同等大小的图片
    text_layer = Image.new('RGBA', image_layer.size, (255, 255, 255, 0))
    text_canvas = ImageDraw.Draw(text_layer)

    # 指定字体和字体大小
    font = ImageFont.truetype('./font/sarasa-mono-sc-nerd-regular.ttf', 100)
    text = '@写代码的安徒生'
    # 获取文本尺寸
    text_size_w, text_size_h = text_canvas.textsize(text, font=font)

    # 循环打印文字,让文字水印遍布图片
    for y in range(0, int(image_layer.size[1] - text_size_h), int(text_size_h + text_size_h * 2)):
        for x in range(0, int(image_layer.size[0] - text_size_w), int(text_size_w + text_size_w / 5)):
            # 设置文字位置
            text_pos = (x, y)
            # 把文字画上去
            text_canvas.text(text_pos, text, font=font, fill=(255, 255, 255, 50))

    # 把水印图层旋转45度
    text_layer = text_layer.rotate(45)

    # 将文字图片覆盖到主图片上
    new_image = Image.alpha_composite(image_layer, text_layer)

    # 压缩一下
    # new_image = new_image.quantize(method=2)

    save_to = Path('./result/' + image_file.name)
    if not save_to.parent.exists():
        save_to.parent.mkdir(parents=True)

    new_image.convert('RGB').save(save_to)


for item in Path('./image').glob('*.jpg'):
    print('正在添加水印:', item.name)
    add_text(item)

效果:

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

写代码的安徒生

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

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

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

打赏作者

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

抵扣说明:

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

余额充值