题目

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

Code:

1 from PIL importImage,ImageDraw,ImageFont2 #path = "F:\Python Learning\Python_Exercise"

3 #读取图片数据

4 iconPath = r"Image\WeChart.png"

5 #labelPath = r"Image\圆圈.png"

6 iconImage=Image.open(iconPath,'r')7 #labelImage = Image.open(labelPath,"r")

8

9 ## 标签上写字

10 #user_font = ImageFont.truetype('simsun.ttc',80)

11 #draw = ImageDraw.Draw(labelImage)

12 #draw.text((int(labelImage.size[0]/4),int(labelImage.size[1]/7)),u'24',font=user_font)

13 #labelImage.save("final.png","PNG")

14

15 #组合Icon

16 icon = Image.new("RGBA",(iconImage.size[0]+105,iconImage.size[1]+105))17 #iconImage.paste(labelImage,(int(iconImage.size[0]-labelImage.size[0]/2-1),0))

18 #iconImage.save("final.png","PNG")

19 #右上角数字标签会导致图片尺寸变大

20 icon.paste(iconImage,(0,54))21 draw =ImageDraw.Draw(icon)22 #直接在图片上画圆

23 draw.ellipse([(iconImage.size[0]-100,5),(iconImage.size[1]+100,205)],"red")24 user_font = ImageFont.truetype('simsun.ttc',100)25 #标注数字

26 draw.text((iconImage.size[0]-50,50),u'24',"white",font=user_font)27 icon.save("final.png","PNG")

Result:

总结:

Pillow API 学习

API 文档路径:http://pillow-cn.readthedocs.io/zh_CN/latest/reference/index.html

(1) PIL.Image.new(mode,size,color)

mode: 新图片的模式,如RGB,灰度图相等

size: 新图象的尺寸,元组对象(a,b)

color: 图像的填充对象

返回图像对象

(2) Image.size

获取图像尺寸,返回的是元组对象

由于返回是元组对象,则访问结果是Image.size[0]

(3) ImageDraw.Draw(im,mode=None)

创建可在图片上进行绘制Draw对象

(4) Image.paste(sourceImg,box=None,mode=None)

将一张图片粘贴到另一张图片上

Image对象指的是被粘贴的图片

sourceImg: 粘贴的源图片

box: 2元组则是粘贴图片位置的左上角开始位置

4元组则是左上角,同时包括右下角,必须符合源图片的尺寸内

mode:图片模式

(5) ImageFont.trueType(font=None,size=None,index=0,filename=None)

设置图片上字体

filename: 设置字体文件,如若没有则是找Window字体

size: 字体大小

(6) ImageDraw.Draw.eclipse(xy,fill=None,outline=0)

图片上绘制椭圆

xy:两种方式

[(x0,y0),(x1,y1)],[x0,y0,x1,y1]左上角,右上角坐标

如果要画圆形则是保证两轴长度相等

fill: 椭圆内部是否填充,填充色

outline:椭圆轮廓宽度

(7) ImageDraw.text(xy,text,fill=None,font=None)

xy: 字的右上角的位置

text:书写的问题,注意编码格式

fill:文本的颜色

font:引入字体

编码经验的总结

(1) 如果不是矢量图可能会造成叠加图片未着色遮盖,故最终选择两个图片叠加,而是直接在图片上绘制圆形

(2)关于图片字体仍然还需进一步的学习,因为想引入微软雅黑,结果没成功,还有就是如何加粗?

(3) 如何让文字自适应在图片中间,C++中有获取字体的像素大小,还得再研究Pillow是否有这个函数?

拓展

(1) 如何抹去上面的数字标签,模拟微信已读

(2) 如何更新上面的数字,模拟不断接受新的消息,未读

思路:

code改编为函数,输入参数为未读消息数据,获取原始图片的画笔

事件响应传入相应的参数

python每天一个小程序_Python 练习册,每天一个小程序----第0000题相关推荐

  1. python每日一个小程序_Python 练习册,每天一个小程序

    第0000题~第0010题 第 0000 题: 将你的 QQ 头像(或者微博头像)右上角加上红色的数字,类似于微信未读信息数量那种提示效果. from PIL import Image, ImageD ...

  2. python在线翻译小程序_Python爬虫学习之翻译小程序

    本次博客分享的内容为基于有道在线翻译实现一个实时翻译小程序,本次任务是参考小甲鱼的书<零基础入门学习Python>完成的,书中代码对于当前的有道词典并不适用,使用后无法实现翻译功能,在网上 ...

  3. python爬虫爬取微信_Python爬虫爬取微信小程序

    之前打算做个微信小程序的社区,所以写了爬虫去爬取微信小程序,后面发现做微信小程序没有前途,就把原来的项目废弃了做了现在的网站观点,不过代码放着也是放着,还不如公开让大家用,所以我把代码贴出来,有需要的 ...

  4. python跳一跳编程构造_Python + 新手 制作“跳一跳”辅助程序

    刚开始学习Python,萌新总有一颗渴望做实践享受成就感的心,最近"跳一跳"比较火,在看了一些前辈的辅助程序教程后,我就也想写一个自己版本的辅助(for Android). 写辅助 ...

  5. python operator 多属性排序_Python之路200个小例子网页版,真诚奉献,从一而终!...

    历史两个月,利用所有业余时间,与朋友一起搜集.创作Python小例子,截止目前已超过200个例子,全新整合汇总为九大章节: 感受Python之美 | 一.Python基础 | 二.Python字符串和 ...

  6. python自动生成鸡汤文_python爬虫+pyinstaller制作一个属于自己的心灵鸡汤

    效果图如下: 实现方法 用Python爬虫对现有的api进行请求,获取彩虹屁,然后用tkinter模块形成一个可视化的gui,最后用pyinstaller对该py文件打包,这就是最后的彩虹屁生成器. ...

  7. python装饰器 廖雪峰_python装饰器的一个妙用

    好吧,我知道是大半夜--,但我还是觉得赶紧花上半个小时,把这最新的想法分享出来是值得的~直接进入正题~ 我们来模拟一个场景,需要你去抓去一个页面,然后这个页面有好多url也要分别去抓取,而进入这些子u ...

  8. 用python写一个记账小程序_python实现日常记账本小程序

    python实现收支的自动计算,能够查询每笔账款的消费详情,具体内容如下 1.函数需要两个文件:一个类似钱包功能,存放钱:另一个用于记录每笔花销的用途 #!/usr/bin/env python im ...

  9. python语言 表白程序_python编写的GUI表白小程序

    # Tkinter是Python的标准GUI(图形用户界面)库 ,Python使用Tkinter可以快速的创建GUI应用程序 from tkinter import * from tkinter im ...

最新文章

  1. MySQL高级 - 常用工具 - mysqlimport与source
  2. 【转】深入浅出图解C#堆与栈 C# Heap(ing) VS Stack(ing) 第二节 栈基本工作原理
  3. 基于主机的入侵检测优缺点_如何建立我们的网络防线?入侵检测,确保我们的网络安全...
  4. Linux无root权限安装cuda9.1和cudnn7.05以及编译框架时无lcuda.so的问题
  5. iScroll API
  6. java乐视面试题_乐视面试题 · vagabond1-1983/JavaRock Wiki · GitHub
  7. EXE4J 错误提醒 Pleasedefine EXE4J_JAVA_HOME to point to an installes 64-bit JDK or JRE
  8. 头像制作软件有哪些?2022微信头像制作软件推荐
  9. Creator 3.0中摄像机调整技巧: 1.旋转:Cmd+右键 移动:空格+右键 放缩:滚轮
  10. CFS三层内网环境 渗透流程
  11. 《Cocos Creator游戏实战》实现微信小游戏的截图,预览和相册保存功能
  12. eclipse中导入jmf的方法,在java中使用jmf播放音频文件的正确方式
  13. matlab 方差计算
  14. RSA非对称加密解密概念
  15. 光纤信号衰减的原理及分析
  16. 科普 | 什么是稀疏默克尔树多值证明
  17. Unity报错之【ArgumentOutOfRangeException: Index was out of range........】
  18. sequelize 向数据库插入数据,自增id该如何添加
  19. 标签传播算法(LPA)
  20. 51单片机实现8只LED左右来回点亮

热门文章

  1. C - 3 求正弦值
  2. 搜狗2012.9.23校园招聘会笔试题
  3. 【倍增】7.11fusion
  4. JS时间戳格式化日期时间
  5. 【数据结构作业—01】用单循环链表解决约瑟夫问题
  6. SSIS实用教程(SQLServer2005)
  7. Java 异常处理学习总结
  8. 无法加载登录用户界面DLL MyGina.dll 解决
  9. Recordset.State 属性
  10. 非递归生成的TreeView