将你的 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吧。

额,话说,我扔下机房几个电脑的软件按照不管,自己自娱自乐,是不是有点偷懒?好饿,去上课了。

最新文章

  1. 【swift学习笔记】六.访facebook登录页面
  2. ubuntu 13.10 mono asp.net服务 安装
  3. iOS内存管理
  4. Content-Type: application/vnd.ms-excel&quot;&gt;
  5. Python 中的进程、线程、协程、同步、异步、回调
  6. C#学习笔记1:正则表达式和数据库连接
  7. [MAXscript Tool]TimeSlider v1.3
  8. 关于SRAM,DRAM,SDRAM,以及NORFLASH,NANDFLASH
  9. Linux内核源代码情景分析-中断半
  10. OR导致笛卡尔积
  11. 第13天 JSTL标签、MVC设计模式、BeanUtils工具类
  12. php array_walk_recursive函数的使用
  13. 一个好用简单的布局空间EasyUI
  14. 跟着刚哥梳理java知识点——基本数据类型(三)
  15. RabbitMQ安装配置和基于EasyNetQ驱动的基础使用
  16. ERROR: ORA-12560: TNS: 协议适配器错误,解决办法:启动OracleServiceORCL服务
  17. 安装Java和Pycharm的步骤
  18. JAVA全套学习视频
  19. (最长回文子串 线性DP) 51nod 1088 最长回文子串
  20. mysql分组(五)

热门文章

  1. insert into 的另一种添加插入新行方式
  2. Mac下su命令提示su:Sorry的解决办法
  3. 和我一起学python
  4. egret的tween动画循环播放
  5. JAVA中-面向网络编程---单层交互
  6. jquery分页插件pagination
  7. MQ 消息队列的比较
  8. Dota2APP--第一天
  9. 【OpenCV3】直线拟合--FitLine()函数详解
  10. php 逐行读取文本文件