• 利用PIL创建验证码


     1. 随机生成rgb 元组

    def random_RGB(min, max):
    return tuple([random.randint(min, max) for i in range(3)])
    2.生成4位随机数
    def random_fcode():
    code = ''
    for i in range(4):
    tag = random.randint(1, 3) # 1:大写 2:小写 3:数字
    if tag == 1:
    code += chr(random.randint(65, 90))
    elif tag == 2:
    code += chr(random.randint(97, 122))
    else:
    code += str(random.randint(0, 9))
    return code
    3.利用画板生成验证码
    # 创建画板
    img = Image.new('RGB',(170,32),random_RGB(150,255)) # 图像模型,大小,颜色

    # 在画板中写字
    img_draw = ImageDraw.Draw(img) # img 画板

    # 设置文字字体
    img_font = ImageFont.truetype('static/font/kumo.ttf',size=32) # 下载的字体, 大小
    # 获取验证码,并将验证码存储在session中,与会话绑定,便于登录时验证

    img_code = random_fcode()
    request.session['img_code'] = img_code

    # 正式画文字:xy轴,文本,颜色,字体
    for i,ch in enumerate(img_code): # i为序号,ch为文本内容(验证码内容)
      img_draw.text((30+i*30,0),ch,random_RGB(0,150),img_font)

    bf = BytesIO() # 字节流
    img.save(bf, 'png') # 存储方法, 画出来的图片的存储格式
    data = bf.getvalue() # 从内存中取出数据

    return HttpRessponse(data)


    在登录界面 可设计成 点击图片进行验证码的刷新
    ajax 为:
      
    $('#codes').click(function () {

    url = '/login_code/';

    {#点击验证码进行更换#}
    var xhr = new XMLHttpRequest();
    xhr.open('GET', url, true);
    xhr.responseType = 'blob';
    xhr.onreadystatechange = function () {
    if(xhr.readyState == 4){
    if(xhr.status == 200){
    var blod = this.response;
    var src = URL.createObjectURL(blod);
    $('#codes').attr('src',src);
    }
    }
    };
    xhr.send()
    })



  • 相关阅读:
    因特网中和多媒体有关的协议
    进程与线程
    线程模型
    SMP PVP Cluster
    读写者
    回调函数
    环境变量
    堆与栈的区别
    操作系统中的同步、异步、阻塞和非阻塞
    Razor潜入2令人疑惑的LocateOwner方法
  • 原文地址:https://www.cnblogs.com/yang220/p/10752853.html
Copyright © 2020-2023  润新知