學習使用PIL生成隨機驗證碼圖片的實例!
效果:

yanzhengma.gif
代碼:
# 使用生成隨機驗證碼圖片
# Python 3.5.1
import string
from random import randint, sample
from PIL import Image, ImageDraw, ImageFont, ImageFilter
# Image 負責處理圖片
# ImageDraw 畫筆
# ImageFont 文字
# ImageFileter 濾鏡
# 定義變量
img_size = (150,50) # 定義畫布大小
img_rgb = (255,255,255) # 定義畫布顏色,白色
img = Image.new("RGB",img_size,img_rgb)
img_text = " ".join(sample(string.ascii_letters+string.digits, 5))
# print(img_text.replace(' ',''))
# 畫圖
drow = ImageDraw.Draw(img)
for i in range(10):
# 隨機畫線
drow.line([tuple(sample(range(img_size[0]),2)), tuple(sample(range(img_size[0]),2))], fill=(0,0,0))
for i in range(99):
# 隨機畫點
drow.point(tuple(sample(range(img_size[0]),2)), fill=(0,0,0))
# 文字
font = ImageFont.truetype("simsun.ttc", 24) # 定義文字字體和大小
drow.text((6,6), img_text, font=font, fill="green")
# 扭曲圖片和濾鏡
params = [
1 - float(randint(1,2)) / 100,
0,
0,
0,
1 - float(randint(1,10)) /100,
float(randint(1,2)) / 500,
0.001,
float(randint(1,2)) / 500
]
img = img.transform(img_size, Image.PERSPECTIVE, params)
img = img.filter(ImageFilter.EDGE_ENHANCE_MORE)
# 展示圖片
img.show()