基于Python写一个简单的验证码,简单易学。
- 1:如果没有安装pillow模块的,先安装一下pillow模块
命令:pip install pillow
- 2:代码:
#引入绘图模块
from PIL import Image,ImageDraw,ImageFont
#引入随机函数模块
import random
import io
def verifycode():
#定义变量,用于画面的背景颜色,宽,高
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'
#随机选取4个值作为验证码
rand_str = ''
for i in range(0,4):
rand_str +=str[random.randrange(0,len(str))]
# 构造字体对象
font = ImageFont.truetype(r'C:\Windows\Fonts\AdobeArabic-Bold.otf',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)
im.show()
if __name__ == '__main__':
verifycode()