python图像处理实践——给头像加数字

原始图像 这里写图片描述 添加消息后的图像

'''将你的 QQ 头像(或者微博头像)右上角加上红色的数字,类似于微信未读信息数量那种提示效果'''
print(__doc__)

from PIL import Image, ImageDraw, ImageFont

# 打开图片
# 对于彩色图像,不管其图像格式是PNG,还是BMP,或者JPG,在PIL中,使用Image模块的
# open()函数打开后,返回的图像对象的模式都是“RGB”
# 将图像由RGB模式转换为RGBA模式
# 模式“RGBA”为32位彩色图像,它的每个像素用32个bit表示,其中24bit表示红色、绿色
# 和蓝色三个通道,另外8bit表示alpha通道,即透明通道。
img = Image.open('./images_1.jpg').convert('RGBA')

# 创建了一张同样大小的空白图,作为画布
txt = Image.new('RGBA', img.size, (255, 255, 255, 0))

# 将数字大小设置为整张图片面积的1000分之一, 也可以自己随便设
img_area = img.size[0]*img.size[1]
fnt_size = int(img_area/1000)
# 获取已下载好的字体,并设置字体大小
fnt = ImageFont.truetype('./Muli-Regular.ttf', fnt_size)

# get a drawing context
d = ImageDraw.Draw(txt)

# 画圆,参数依次是[a,b](以a、b两点作为矩阵的左上角和右下角,在中间画圆),颜色
d.ellipse([(img.size[0]-40, 0), (img.size[0], 40)], fill=(255, 0, 0))

# 在画布的圆上写字,参数依次是坐标,文本内容,字体,颜色
d.text((img.size[0]-32, -5), '9', font=fnt, fill=(255, 255, 255, 128))

# 把原始图片和操作后的画布,拼在一起
out = Image.alpha_composite(img, txt)
out.show()
out.save('./new_images_1.png')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值