python添加图片水印_Python - 利用PIL添加图片水印

利用 PIL 的图片处理库添加水印的实现.#!/usr/bin/python2

# -*- coding: utf-8 -*-

import os

from PIL import Image, ImageDraw, ImageFont

def add_watermark_fun1(img_pil, text):

print("[INFO]PIL image info: ", img_pil.size)

img_rgba = img_pil.convert("RGBA")

text_img = Image.new("RGBA", img_rgba.size, (255, 255, 255, 0))

draw = ImageDraw.Draw(text_img)

font = ImageFont.truetype('NotoSansCJK-Black.ttc', 30) # 字体及字体大小

print("[INFO]Text info: ", draw.textsize(text, font=font))

text_position = (20, 20)

# 文本位置, 颜色, 透明度

draw.text(text_position, text, font=font, fill=(128, 0, 0, 50))

# 合成水印图片

img_with_watermark = Image.alpha_composite(img_rgba, text_img)

# 显示加水印后的图片

img_with_watermark.show()

return img_with_watermark.convert("RGB")

def add_watermark_fun2(img_pil, text):

print("[INFO]PIL image info: ", img_pil.size)

width, height = img_pil.width, img_pil.height

#

new_img = Image.new('RGBA', (width * 3, height * 3), (0, 0, 0, 0))

new_img.paste(img_pil, (width, height))

img_rgba = new_img.convert('RGBA')

#

text_img = Image.new('RGBA', img_rgba.size, (255, 255, 255, 0))

draw = ImageDraw.Draw(text_img)

# 添加水印

# 文本位置, 颜色, 透明度

font = ImageFont.truetype('NotoSansCJK-Black.ttc', 20)

for i in range(0, img_rgba.size[0], len(text) * 20 + 80):

for j in range(0, img_rgba.size[1], 200):

draw.text((i, j), text, font=font, fill=(0, 0, 0, 50))

# 旋转文字 45 度

text_img = text_img.rotate(-45)

# 合成水印图片

img_with_watermark = Image.alpha_composite(img_rgba, text_img)

# 原始图片尺寸

img_with_watermark = img_with_watermark.crop((width, height, width * 2, height * 2))

img_with_watermark.show()

return img_with_watermark.convert("RGB")

if __name__ == '__main__':

img_file = "/path/to/test.jpg"

text = u'AIUAI 测试使用'

img_pil = Image.open(img_file)

#out_img = add_watermark_fun1(img_pil, text)

out_img = add_watermark_fun2(img_pil, text)

out_img.save("/path/to/save/out_img.jpg", 'JPEG', quality=100)

print("[INFO]Done.")

如:

ad57ec420fbbed8e3adbc33cb8ad54f8.png

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值