早些年,微信朋友圈有段时间非常流行这个头像+1的套路,简直逼死强迫症。
将你的 QQ 头像(或者微博头像)右上角加上红色的数字,类似于微信未读信息数量那种提示效果。 类似于图中效果
涉及知识:
Python Imaging Library (PIL)图像库,Image, ImageDraw, ImageFont模块
话不多说先上代码:
1 from PIL import Image, ImageDraw, ImageFont
2
3 def add_num(img):
4 draw = ImageDraw.Draw(img)
5 myfont = ImageFont.truetype("C:\\WINDOWS\\Fonts\\SIMYOU.TTF", 200)
6 width, height = img.size
7 draw.ellipse((width-200,0,width,200),fill="red",outline ="red")
8 draw.text((width-150, 15), '1', font=myfont, fill="white")
9
10 img.save('result.jpg','jpeg')
11
12 image = Image.open('yoyo.jpg')
13 add_num(image)
其中ImageFont.truetype(file,size) ? Font instance
含义:加载一个TrueType或者OpenType字体文件,并且创建一个字体对象。这个函数从指定的文件加载了一个字体对象,并且为指定大小的字体创建了字体对象。
在windows系统中,如果指定的文件不存在,加载器会顺便看看windows的字体目录下是否存在。
绘制效果:
过程中可能会出现的问题:
首先是PIL库的安装。我用的是pycharm,Python版本2.7。第一次装也是装了几次才成功,主要原因是,通过pycharm直接安装,里面装的版本只有1.1.6的,安装之后,运行不了,会提示你找不到合适的Python版本。
然后我就去网上查了下,知道了PIL库主要2.5 2.6用的比较多,2.7需要装最新版的库。
The following downloads are currently available:
PIL 1.1.7
- Python Imaging Library 1.1.7 Source Kit (all platforms) (November 15, 2009)
- Python Imaging Library 1.1.7 for Python 2.4 (Windows only)
- Python Imaging Library 1.1.7 for Python 2.5 (Windows only)
- Python Imaging Library 1.1.7 for Python 2.6 (Windows only)
- Python Imaging Library 1.1.7 for Python 2.7 (Windows only)
Additional downloads may be found here.
PIL 1.1.6
- Python Imaging Library 1.1.6 Source Kit (all platforms) (440k TAR GZ) (December 3, 2006)
- Python Imaging Library 1.1.6 for Python 2.2 (Windows only)
- Python Imaging Library 1.1.6 for Python 2.3 (Windows only)
- Python Imaging Library 1.1.6 for Python 2.4 (Windows only)
- Python Imaging Library 1.1.6 for Python 2.5 (Windows only)
- Python Imaging Library 1.1.6 for Python 2.6 (Windows only)
然后下载了2.7可以用的1.1.7,双击安装,然后再Pycharm - File - Setting - Project Interpreter - Available Packages 然后面板左下角的Manage Repositories中添加,PIL安装的路径,我的路径是(C:\Python27\Lib\site-packages\PIL)。
退回到settings界面,可以看到PIL库已经安装好了。
在程序运行的过程中又出现了错误提示PIL库中:The _imagingft C module is not installed错误。
提示有个C模块咩有安装,明明是在官网下的,怎么会出现这样的情况呢,又查了一番,原来是PIL库中,有一个模块那没有编译,导致提示C模块找不到,附上一个编译过的1.1.7PIL库。(http://pan.baidu.com/s/1pLCTb1h)
安装之前,记得要将原来的版本卸载掉。