• 将你的 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”都表示纯红色。



  • 相关阅读:
    1105 Spiral Matrix (25 分)螺旋矩阵
    1089 Insert or Merge (25 分)
    1044 Shopping in Mars (25 分)二分查找
    1068 Find More Coins (30 分)记忆化搜索
    1133 Splitting A Linked List (25 分)
    1145 Hashing
    1147 Heaps (30 分)
    1098 Insertion or Heap Sort (25 分)
    自测-3 数组元素循环右移问题 (20 分)
    自测-1 打印沙漏 (20 分)
  • 原文地址:https://www.cnblogs.com/huangguabushihaogua/p/11446536.html
Copyright © 2020-2023  润新知