12. 常用第三方模块

常用第三方模块

除了内建的模块,Python还有很多的第三方模块,在PyPI-the Python Package Index注册。

PIL

PIL:Python Imaging Library,已经是Python平台事实上的图像处理标准库了。PIL的功能非常强大,API却非常简单易用。PIL只支持到2.7,PIL上的兼容版本Pillow,加了很多新特性,可以支持到3.x。

操作图像

图像缩放操作:

1
2
3
4
5
6
7
8
>>> im=Image.open('1.jpg')
>>> w,h=im.size
>>> print('Original image size: %sx%s' %(w,h))
Original image size: 600x337
>>> im.thumbnail((w//2, h//2))
>>> print('Resize image to: %sx%s' %(w//2,h//2))
Resize image to: 300x168
>>> im.save('thumbnail.jpg','jpeg')

其他功能如切片、旋转、滤镜、输出文字、调色板等一应俱全。比如,模糊效果:

1
2
3
4
5
>>> from PIL import Image,ImageFilter
>>>
>>> im=Image.open('1.jpg')
>>> im2=im.filter(ImageFilter.BLUR)
>>> im2.save('blur.jpg','jpeg')

PIL的ImageDraw提供了一系列绘图的方法,让我们可以直接绘图。如生成字幕验证码的图片:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#!/usr/bin/env python3
#-*- coding: utf-8 -*-
from PIL import Image, ImageDraw, ImageFont, ImageFilter
import random
#随机字母:
def rndChar():
return chr(random.randint(65,90))
#随机颜色1:
def rndColor():
return (random.randint(64,255),random.randint(64,255),random.randint(64,255))
#随机颜色2:
def rndColor2():
return (random.randint(32,217),random.randint(32,217),random.randint(32,217))
#240*60
width=60*4
height=60
image=Image.new('RGB',(width,height),(255,255,255))
#创建Font、Draw对象:
font=ImageFont.truetype('C:\Windows\Fonts\Arial.ttf',36)
draw=ImageDraw.Draw(image)
#填充:
for x in range(width):
for y in range(height):
draw.point((x,y),fill=rndColor())
#输出文字:
for t in range(4):
draw.text((60*t+10,10),rndChar(),font=font,fill=rndColor2())
#模糊
image=image.filter(ImageFilter.BLUR)
image.save('code.jpg','jpeg')

得到的验证码图片如下:
Alt text

详细的Pillow官方文档:

Donate comment here