python中PIL模块生成四位数验证码,代码详解
# 引入绘图模块
from PIL import Image,ImageDraw,ImageFont
# 引入随机函数模块
import random
# 定义变量,用于画面的背景颜色,宽和高
bgcolor = (random.randrange(20,100),random.randrange(20,100),random.randrange(20,100))
width = 100
height = 50
# 创建画面对象
im = Image.new('RGB',(width,height),bgcolor)
# 创建画笔对象
draw = ImageDraw.Draw(im)
# 调用画笔的point()函数绘制噪点
for i in range(0,100):
xy = (random.randrange(0,width),random.randrange(0,height))
fill = (random.randrange(0,255),255,random.randrange(0,255))
draw.point(xy,fill=fill)
# 定义验证码的备选值
str = '1234567890qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM'
rand_str = ''
for j in range(4):
rand_str += str[random.randrange(0,len(str))]
print(rand_str)
# 构造字体对象
font = ImageFont.truetype(r'C:\Windows\Fonts\BRUSHSCI.TTF',40)
# 构造字体颜色
fontcolor1 = (255,random.randrange(0,255),random.randrange(0,255))
fontcolor2 = (255,random.randrange(0,255),random.randrange(0,255))
fontcolor3 = (255,random.randrange(0,255),random.randrange(0,255))
fontcolor4 = (255,random.randrange(0,255),random.randrange(0,255))
# 绘制4个字
draw.text((5,2),rand_str[0],font=font,fill=fontcolor1)
draw.text((25,2),rand_str[1],font=font,fill=fontcolor2)
draw.text((50,2),rand_str[2],font=font,fill=fontcolor3)
draw.text((75,2),rand_str[3],font=font,fill=fontcolor4)
# 释放画笔
del draw
# 将图片保存在内存中
im.save('1.png','png')