赞
踩
Python3.6 20个入门级小程序(一)
将你的 QQ 头像(或者微博头像)右上角加上红色的数字,类似于微信未读信息数量那种提示效果。
二、实现思路:
需要使用图像处理类库,而且应具备绘图功能、应用字体功能、颜色功能等,Python第三方库中有这样功能的库——PIL:Python Imaging Library,Python平台上的图像处理库。PIL功能强大,而且API简单易用。但是PIL仅支持到Python 2.7,有人在PIL的基础上创建了兼容的版本,名字叫Pillow,支持最新Python3.x,又加入了许多新特性,因此,我们可以直接安装使用Pillow。
三、安装PIL第三方库:
pip install pillow
四、具体实现如下:
-*- coding: utf-8 -*-
- # 引入Pillow3.6测试正常,给头像加数字
- from PIL import Image, ImageDraw, ImageFont, ImageColor
- def add_num(img):
- # 创建一个Draw对象
- draw = ImageDraw.Draw(img)
- # 创建一个 Font
- myfont = ImageFont.truetype('C:/windows/fonts/Arial.ttf', size=40)
- fillcolor = ImageColor.getrgb('red')
- #图像对象的尺寸返回宽高的元组后复制变量
- width, height = img.size
- draw.text((width-30, 0), '+1', font=myfont, fill=fillcolor)
- img.save('touxiang+1.jpg', 'jpeg')
- return 0
- if __name__ == '__main__':
- image = Image.open('touxiang.jpg')
- add_num(image)
五、程序中涉及模块的函数与方法详解:
1、Image模块介绍:该Image模块提供了一个与用于表示PIL图像相同名称的类。该模块还提供了许多功能,包括从文件加载图像和创建新图像的功能。
(1)打开图片的方法,格式为:Image.open(fp,mode ='r' )
参数:fp—需要打开的文件名,注意路径
mode —可选参数,如果有值必须是r
返回:图像对象
例子:image = Image.open('touxiang.jpg')
(2)将此图像保存在给定的文件名,格式为:Image.save(fp, format=None, **params)
参数:fp - 文件名(string)。
format - 可选格式覆盖。如果省略,则使用的格式由文件扩展名确定。如果使用文件对象而不是文件名,则应始终使用此参数。返回:无
例子:img.save('touxiang+1.jpg', 'jpeg')
2、ImageDraw模块介绍:该ImageDraw模块提供简单的2D图形 。可以使用此模块创建新图像,处理或修改现有图像,并在运行时生成图形以供Web使用。
(1)创建绘图对象的方法,格式为:ImageDraw.Draw(im, mode=None)
参数im:图像或图像对象
mode :用于颜色值的可选模式。对于RGB图像,此参数可以是RGB或RGBA(将图形混合到图像中)。对于所有其他模式,此参数必须与图像模式相同。如果省略,则模式默认为图像的模式。
返回:绘图对象
例子:draw = ImageDraw.Draw(img)
(2)在给定位置绘制字符串,格式为:ImageDraw.ImageDraw.text(xy, text, fill=None, font=None, anchor=None, spacing=0, align="left", direction=None, features=None)
参数: xy - 文本的左上角。
text - 要绘制的文本。如果它包含任何换行符,则将文本传递给multiline_text()features-在文本布局期间使用的OpenType字体功能的列表。这通常用于打开默认情况下未启用的可选字体功能。
返回:将数字按照指定字体,颜色,字号添加在图像的指定位置
例子:draw.text((width-30, 0), '+1', font=myfont, fill=fillcolor)
3、ImageFont模块介绍:该ImageFont模块定义了一个具有相同名称的类。这个类的实例存储位图字体,并与该ImageDraw.Draw.text()方法一起使用 。
(1)创建字体对象的方法,格式为:ImageFont.truetype(font=None, size=10, index=0, encoding='', layout_engine=None)
参数: font - 一个truetype字体文件。在Windows下,如果在此文件名中找不到文件,则加载程序也会在Windows fonts/目录中查找。
size - 请求的大小,以分为单位。返回:字体对象
例子:myfont = ImageFont.truetype('C:/windows/fonts/Arial.ttf', size=40)
4、ImageColor模块介绍:该ImageColor模块包含从CSS3样式颜色说明符到RGB元组的颜色表和转换器。这个模块被使用 Image.Image.new()和ImageDraw模块等。
(1)创建色彩对象的方法,格式为:ImageColor.getrgb(color)
参数:color – 一个颜色的字符串
返回:返回颜色
例子:fillcolor = ImageColor.getrgb('red')
注:解释的文章翻译自PIL官方文档,查看原文请移步至https://pillow.readthedocs.io/en/4.3.x/index.html
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。