zoukankan      html  css  js  c++  java
  • 将你的 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”都表示纯红色。



  • 相关阅读:
    common-fileupload上传图片并显示图片
    common-fileupload上传文件
    Hibernate映射文件配置(hbm.xml和注解方式)
    hdu1272:小希的迷宫(并查集)
    hdu1272:小希的迷宫(并查集)
    hdu1102:Constructing Roads(最小生成树)
    hdu1102:Constructing Roads(最小生成树)
    hdu1054:Strategic Game(最小点覆盖)
    hdu1054:Strategic Game(最小点覆盖)
    hdu2255:奔小康赚大钱(KM)
  • 原文地址:https://www.cnblogs.com/huangguabushihaogua/p/11446536.html
Copyright © 2011-2022 走看看