python每天一个小程序_Python 练习册,每天一个小程序----第0000题
题目
第 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题相关推荐
- python每日一个小程序_Python 练习册,每天一个小程序
第0000题~第0010题 第 0000 题: 将你的 QQ 头像(或者微博头像)右上角加上红色的数字,类似于微信未读信息数量那种提示效果. from PIL import Image, ImageD ...
- python在线翻译小程序_Python爬虫学习之翻译小程序
本次博客分享的内容为基于有道在线翻译实现一个实时翻译小程序,本次任务是参考小甲鱼的书<零基础入门学习Python>完成的,书中代码对于当前的有道词典并不适用,使用后无法实现翻译功能,在网上 ...
- python爬虫爬取微信_Python爬虫爬取微信小程序
之前打算做个微信小程序的社区,所以写了爬虫去爬取微信小程序,后面发现做微信小程序没有前途,就把原来的项目废弃了做了现在的网站观点,不过代码放着也是放着,还不如公开让大家用,所以我把代码贴出来,有需要的 ...
- python跳一跳编程构造_Python + 新手 制作“跳一跳”辅助程序
刚开始学习Python,萌新总有一颗渴望做实践享受成就感的心,最近"跳一跳"比较火,在看了一些前辈的辅助程序教程后,我就也想写一个自己版本的辅助(for Android). 写辅助 ...
- python operator 多属性排序_Python之路200个小例子网页版,真诚奉献,从一而终!...
历史两个月,利用所有业余时间,与朋友一起搜集.创作Python小例子,截止目前已超过200个例子,全新整合汇总为九大章节: 感受Python之美 | 一.Python基础 | 二.Python字符串和 ...
- python自动生成鸡汤文_python爬虫+pyinstaller制作一个属于自己的心灵鸡汤
效果图如下: 实现方法 用Python爬虫对现有的api进行请求,获取彩虹屁,然后用tkinter模块形成一个可视化的gui,最后用pyinstaller对该py文件打包,这就是最后的彩虹屁生成器. ...
- python装饰器 廖雪峰_python装饰器的一个妙用
好吧,我知道是大半夜--,但我还是觉得赶紧花上半个小时,把这最新的想法分享出来是值得的~直接进入正题~ 我们来模拟一个场景,需要你去抓去一个页面,然后这个页面有好多url也要分别去抓取,而进入这些子u ...
- 用python写一个记账小程序_python实现日常记账本小程序
python实现收支的自动计算,能够查询每笔账款的消费详情,具体内容如下 1.函数需要两个文件:一个类似钱包功能,存放钱:另一个用于记录每笔花销的用途 #!/usr/bin/env python im ...
- python语言 表白程序_python编写的GUI表白小程序
# Tkinter是Python的标准GUI(图形用户界面)库 ,Python使用Tkinter可以快速的创建GUI应用程序 from tkinter import * from tkinter im ...
最新文章
- MySQL高级 - 常用工具 - mysqlimport与source
- 【转】深入浅出图解C#堆与栈 C# Heap(ing) VS Stack(ing) 第二节 栈基本工作原理
- 基于主机的入侵检测优缺点_如何建立我们的网络防线?入侵检测,确保我们的网络安全...
- Linux无root权限安装cuda9.1和cudnn7.05以及编译框架时无lcuda.so的问题
- iScroll API
- java乐视面试题_乐视面试题 · vagabond1-1983/JavaRock Wiki · GitHub
- EXE4J 错误提醒 Pleasedefine EXE4J_JAVA_HOME to point to an installes 64-bit JDK or JRE
- 头像制作软件有哪些?2022微信头像制作软件推荐
- Creator 3.0中摄像机调整技巧: 1.旋转:Cmd+右键 移动:空格+右键 放缩:滚轮
- CFS三层内网环境 渗透流程
- 《Cocos Creator游戏实战》实现微信小游戏的截图,预览和相册保存功能
- eclipse中导入jmf的方法,在java中使用jmf播放音频文件的正确方式
- matlab 方差计算
- RSA非对称加密解密概念
- 光纤信号衰减的原理及分析
- 科普 | 什么是稀疏默克尔树多值证明
- Unity报错之【ArgumentOutOfRangeException: Index was out of range........】
- sequelize 向数据库插入数据,自增id该如何添加
- 标签传播算法(LPA)
- 51单片机实现8只LED左右来回点亮