Python练习:0000,python实现头像消息未读
程序员文章站
2022-07-12 13:16:07
...
更多题目参考:https://github.com/Show-Me-the-Code/show-me-the-code
题目:
将 QQ 头像、微信头像(或者微博头像)右上角加上红色的数字,类似于微信未读信息数量那种提示效果。
我使用的图片是直接从微信头像下载下来的,所以红色圆圈跟数据的位置是根据这类图片大小调的。若是使用其它大小的图片可能会出现位置不对,需要自己调整。当然我自己试了各种大小的图片,并没有出现位置不对。
效果展示:
# !/usr/bin/python
# -*- coding: utf-8 -*-
from PIL import Image, ImageDraw, ImageFont
import matplotlib.pyplot as plt
# 自定义添加数字的函数
def add_num(img):
width, height = img.size
RD = min(width *6 //16, height*6 //16) # 获得圆的直径RD
Red = (255, 0, 0) # 红色 也可以写成 Red = '#ff0000'
White = "#ffffff" # 白色 White = (255, 255, 255)
myfont = ImageFont.truetype('C:/windows/fonts/Arial.TTF', size = RD-80)
Add_num = '1'
print(RD)
img2 = Image.new(mode='RGBA', size=(width+RD, height+RD)) # RGBA 的A是透明度
img2.paste(img,(RD//2,RD//2)) # 将图片放在一个更大的透明背景图片上
draw = ImageDraw.Draw(img2)
width, height = img2.size
positionC = (width - RD-100, 100, width-100, RD+100) # 圆C的位置范围,图像右上角 (left, top, right, bottom)
positionNum = (width - RD * 3 // 4-100, -RD * 1 / 16+143) # 数字Num的起始位置
draw.ellipse(positionC , fill = Red) # 在图像的右上角画出一个红圆
draw.text(positionNum, Add_num , font = myfont , fill = White) # 在红圆中写出数字
img2.save('new3.png') # 有透明度 故保存为png
# plt.imshow(img2)
# plt.show()
if __name__ == '__main__':
image = Image.open('C:\\Users\Administrator\Desktop\\1.png')
add_num(image)
上一篇: rabbitmq简介及安装