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

首先,要安装PIL库,在pytho3中已经叫Pillow,安装命令:pip install Pillow

但是在应用时要导入的名字还叫:PIL

 在图片上的新生成的数字可以用随机数,所以还需要导入一个random

接下来可以定义函数直接编写代码了

 执行函数

 完整代码

from PIL import Image,ImageDraw,ImageFont,ImageColor
import random
def Put_Add_Num(pic,num):

im = Image.open(pic) #打开图片
draw = ImageDraw.Draw(im) #创建draw对象
x,y =im.size #获取图片大小
font = ImageFont.truetype("arial.ttf",50) #设置字体大小
fillcolor = ImageColor.colormap.get("red") #设置字体颜色
draw.text((x - 30,40),"%s"%num,font = font , fill = fillcolor) #添加文字
im.save("D:\Test_script\image.png")

if __name__ == "__main__":
pic = "D:\Test_script\Pic\WeChat.jpg" #图片路径
num = random.randint(1,10) #添加1到10的随机整数
Put_Add_Num(pic,num)

最后说说踩过的坑
1、save保存的图片最好是用png格式,否则如果原始图片是png格式就会报错:OSError: cannot write mode RGBA as JPEG  
  这是因为:PNG有RGBA四个通道,而JPEG是RGB三个通道,所以PNG转BMP时候程序不知道A通道怎么办,就会产生错误。
  最好的解决办法就是放弃一个通道,保存为png格式,或者增加if判断语句
2、图片的原始路径和新图片的保存路径中需要转义字符:‘’
3、获取图片的坐标与PIl的开始坐标一致为图片的左上角(0,0)
4、十六进制颜色说明符,定义为“#rgb”或者“#rrggbb”。例如,“#ff0000”表示纯红色
5、ImageDraw模块提供了140个标准颜色名称,Xwindow系统和大多数web浏览器都支持这些颜色。颜色名称对大小写不敏感。例如,“red”和“Red”都表示纯红色。



原文地址:https://www.cnblogs.com/huangguabushihaogua/p/11446536.html