Django 生成随机验证码图片
Django生成验证码图片
用到的模块: io, random, pillow(需要安装)
安装pillow模块:
# CMD运行下面命令
pip install pillow
代码:
# views.py
import random
from PIL import Image, ImageDraw, ImageFont
from io import BytesIO
'''
BytesIO: 能够存储数据,并以二进制的格式再返回
Image: 产生图片
ImageDraw: 产生画笔
ImageFont: 控制字体样式
'''
# 随机生成三原色
def get_random():
col_num = random.randint(0, 255)
return col_num, col_num, col_num
# 生成随机验证码图片
def get_code(request):
# 生成图片 参数位置对应: 颜色样式, (长, 宽), 三原色
img_obj = Image.new('RGB', (263, 33), get_random())
# 在图片上生成一个画笔对象
img_draw = ImageDraw.Draw(img_obj)
# 字体样式
img_font = ImageFont.truetype('字体路径', '字体大小int类型')
# 随机生成验证码
code = ''
for i in range(5):
random_upper = chr(random.ranint(65, 90))
random_lower = chr(random.ranint(97, 122))
random_int = str(random.ranint(0, 9))
temp = random.choice([random_int, random_lower, random_upper])
# 将产生的而随机字符写在图片上
# 对应参数: temp:写的内容, get_random():三原色, img_font:字体
img_draw.text(('x轴坐标int', 'y轴坐标'), temp, get_random(), img_font)
code += temp
# 将随机字符串存入session
request.session['code'] = code
io_obj = BytesIO()
img_obj.save(io_obj, 'png')
return HttpResponse(io_obj.getvalue())
滑动验证码参考:极验
传送门:https://docs.geetest.com/