python模块学习第 0000 题
将你的 QQ 头像(或者微博头像)右上角加上红色的数字,类似于微信未读信息数量那种提示效果。 类似于图中效果:
好可爱>%<!
题目来源:https://github.com/Yixiaohan/show-me-the-code,感谢@史江歌以及其他人,让我找到了一个系统的学习python模块的好地方。
看到这个题目的第一印象是——额,难不成让我找qq的API,然后在手机APP的壁纸上提示QQ消息?好吧,我承认自己想复杂了,所以第二个想法就来了。因为博主最近学习比较杂乱无章,所以学习了tkinter以及opencv模块,后来发现大多数人使用PIL模块处理图像,好吧,由于上次图像指纹的识别用到了PIL模块以及Pillow模块,那么就使用三种方法把图片处理一下吧,代码如下:
# coding=utf-8
"""
使用tkinter
"""
__author__ = 'wing1995'
from tkinter import * def tk_image():
root = Tk() w = Canvas(root, width=500, height=500)
w.pack() photo = PhotoImage(file="C:/Users/wing1995/Desktop/classic.gif")
w.create_image(0, 0, anchor=NW, image=photo)
w.create_text(480, 60, text="", fill="red", font=('Times', 40)) mainloop() if __name__ == "__main__":
tk_image()
使用tkinter模块的好处是,方便,但是由于没有学到如何将制作的窗口中的画布保存为图片的形式,所以只能直接把窗口截图给大家看啦:
第二张方法代码:
# coding=utf-8
__author__ = 'wing1995'
"""
使用OpenCV
"""
import cv2 img = cv2.imread('classic.jpg') font = cv2.FONT_HERSHEY_SIMPLEX
cv2.putText(img, '', (450, 100), font, 4, (0, 0, 255), 4) cv2.imshow('OpenCV', img) cv2.waitKey(0)
cv2.destroyAllWindows()
同样简单明白,I love python!结果如下:
估计是我的网速问题,弄得几张图都碎掉了,以后有空研究一下这个问题,或许是像素的丢失,导致图片的不完整,也就破图了,不管怎样还是觉得第一张图片好看点,ok,上第三类方法代码:
# coding=utf-8
__author__ = 'wing1995'
"""
使用PIL
"""
from PIL import Image, ImageDraw, ImageFont sourceFilename = "classic.jpg"
avatar = Image.open(sourceFilename) # 打开图片文件
drawAvatar = ImageDraw.Draw(avatar) # 创建画刷,用来将数字写在图片上 myFont = ImageFont.truetype("C:/Windows/Fonts/simsunb.ttf", 60) # 使用特定字体写字 drawAvatar.text([450, 60], text="", fill=(255, 0, 0), font=myFont) avatar.show()
avatar.save('classic_pil.jpg')
这一次,学会保存图片,话说opencv中保存图片也很简单的不,只不过脑袋一时短路,忘记了,上图片:
不得不说,虽然PIL模块没怎么学习,但是上手仍然很简单,而且很详细,比如字体的设置,估计其他模块也有这样的功能,只是自己没发现而已,ok了,那么第一个练习题就这样了,有些代码明显需要改进,比如标志“9”的坐标应该放在同一个地方,便于比较之类的,大小也应该相同,代码能够函数化就好了,毕竟python处处是对象。明天继续第二个,以及coursera的语法温习,晚上玩一玩微博数据API吧。
额,话说,我扔下机房几个电脑的软件按照不管,自己自娱自乐,是不是有点偷懒?好饿,去上课了。
python模块学习第 0000 题的更多相关文章
- 【转】Python模块学习 - fnmatch & glob
[转]Python模块学习 - fnmatch & glob 介绍 fnmatch 和 glob 模块都是用来做字符串匹配文件名的标准库. fnmatch模块 大部分情况下使用字符串匹配查找特 ...
- 【目录】Python模块学习系列
目录:Python模块学习笔记 1.Python模块学习 - Paramiko - 主机管理 2.Python模块学习 - Fileinput - 读取文件 3.Python模块学习 - Confi ...
- Python模块学习filecmp文件比较
Python模块学习filecmp文件比较 filecmp模块用于比较文件及文件夹的内容,它是一个轻量级的工具,使用非常简单.python标准库还提供了difflib模块用于比较文件的内容.关于dif ...
- Python模块学习:logging 日志记录
原文出处: DarkBull 许多应用程序中都会有日志模块,用于记录系统在运行过程中的一些关键信息,以便于对系统的运行状况进行跟踪.在.NET平台中,有非常著名的第三方开源日志组件log4net ...
- 解惑Python模块学习,该如何着手操作...
Python模块 晚上和朋友聊天,说到公司要求精兵计划,全员都要有编程能力.然后C.Java.Python-对于零基础入门的,当然是选择Python的人较多了.可朋友说他只是看了简单的语法,可pyth ...
- Python模块学习
6. Modules If you quit from the Python interpreter and enter it again, the definitions you have made ...
- Python模块学习系列
python模块-time python模块-datetime python模块-OS模块详解
- Python模块学习遇到的问题
Python使用import导入模块时报ValueError: source code string cannot contain null bytes的解决方案 Python使用import导入模块 ...
- Python 模块学习:re模块
今天学习了Python中有关正则表达式的知识.关于正则表达式的语法,不作过多解释,网上有许多学习的资料.这里主要介绍Python中常用的正则表达式处理函数. 方法/属性 作用 match() 决定 R ...
随机推荐
- C# 调用人脸识别 虹软ArcFace2.0实例
虹软SDK推出了2.0版本,这个版本的所有API都集合在一个动态库里面,再通过引擎库调用,比1.2版本相对轻便了很多. 了解详情戳这里 小西瓜也迫不及待弄了一个新版本的C#实例,基于VS2013开发的 ...
- 使用Emit实现给实体赋值
Dapper.net的速度很快,最近看源码,原来他orm的实现是通过编写大量IL代码实现的. 使用DynamicMethod,自己编织一个给实体赋值的方法.这种写法效率很高,接近直接对属性赋值.比使用 ...
- 【cocos2d-x 手游研发小技巧(4)与Android混编实现换“头像图片”】
cocos2dx在android平台上的游戏开发中往往会遇到一些混编需求,如: 比方有的社区类游戏需要用到更换玩家的“头像”操作,其实就是调用android servers服务里面的本地图片,以及选取 ...
- XHTML与HTML、HTML5的区别
XHTML与HTML最主要的区别 XHTML 元素必须被正确地嵌套. XHTML 元素必须被关闭. XHTML标签名必须用小写字母. XHTML 文档必须拥有根元素. HTML5 HTML5是很有野心 ...
- Android学习之Adapter(数据适配器)
1.定义 数据适配器是AdapterView视图(如ListView - 列表视图控件.Gallery - 缩略图浏览器控件.GridView - 网格控件.Spinner - 下拉列表控件. ...
- 构造函数(JAVA)
构造函数 :是一种特殊的方法,主要用来在创建对象时初始化对象, 即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中. 特别的一个类可以有多个构造函数 ,可根据其参数个数的不同或参数类 ...
- BZOJ 1150--数据备份(链表&堆&贪心)
1150: [CTSC2007]数据备份Backup Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 2572 Solved: 1038[Submit ...
- php中ajax实例,用到json
调用的博客园苏恒锋的文章.先收藏,在学习: http://www.cnblogs.com/in-loading/archive/2012/05/18/2508123.html 程序中两个文件jsonT ...
- logstash5.5.0同步sql server数据
注意:jdbc.conf和jdbc.sql文件编码都为ANSI jdbc.conf内容如下: input { stdin { } jdbc { jdbc_connection_string => ...
- Dota2APP--第二天
一.今天的任务 1)自定义标签栏控制器 2)自定义导航栏控制器 3)在新特性界面播放音频 1.第一个任务:自定义标签栏控制器 原因:默认的TabbarViewController不能满足项目的需求. ...