Python3.6 20个入门级小程序(一)

来源:互联网 发布:sql注入点判断 编辑:程序博客网 时间:2024/06/05 13:22

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, ImageColordef 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 0if __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 - 可选格式覆盖。如果省略,则使用的格式由文件扩展名确定。如果使用文件对象而不是文件名,则应始终使用此参数。
   options - 图像编写器的额外参数。

返回:无

例子: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()
fill- 用于文本的颜色。
font - 一个ImageFont实例。
spacing - 如果文本传递给multiline_text(),行之间的像素数。
align- 如果文本传递给multiline_text(),“left”,“center”或“right”。
direction-方向的文字。它可以是“rtl”(从右到左),'ltr'(从左到右),'ttb'(从上到下)或'btt'(从下往上)。

  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 - 请求的大小,以分为单位。
index - 要加载的字体(默认是第一个可用面)。
encoding - 要使用的字体编码(默认为Unicode)。通用编码是“unic”(Unicode),“symb”(Microsoft Symbol),“ADOB”(Adobe Standard),“ADBE”(Adobe Expert)和“armn”(Apple Roman))。
layout_engine - 要使用的布局引擎(如果可用): ImageFont.LAYOUT_BASIC或ImageFont.LAYOUT_RAQM。

返回:字体对象

例子: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

原创粉丝点击