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/

posted @ 2019-11-01 21:04  17vv  阅读(209)  评论(1编辑  收藏  举报