Django 生成随机验证码图片

大兔子大兔子 提交于 2019-12-03 05:14:58

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:写的内容, 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/

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!