zoukankan      html  css  js  c++  java
  • verifycode验证码模版

    # -*- coding:utf-8 -*-
    from django.shortcuts import HttpResponse
    def verifycode(request):
        # 引入绘图模块
        from PIL import Image,ImageDraw,ImageFont
        #引入随机函数模块
        import random
        #定义变量,用于画面的背景色,宽,高
        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))]
        #构造字体对象 把C盘的字体文件放到其它盘,因为C盘字体文件路径不好找
        font = ImageFont.truetype("E:simsunb.ttf", 36)
        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)
        #释放画笔
        del draw
        # request.session['verifycode'] = rand_str
        #内存文件操作
        import io
        buf = io.BytesIO()
        #将图片保存在内存中,文件类型为png
        im.save(buf,'png')
        #将内存中的图片数据返回给客户端,MIME类型为图片png
        return HttpResponse(buf.getvalue(),'image/png')
    
    
    #备注:
    # code1 = request.session['verify'] 【登录获取图片上的验证码】
    #code2 = request.POST.get('verifycode') 【获取登录表单上输入的验证码】
  • 相关阅读:
    ios 应用剖析
    nyist 737 相邻石子合并问题
    砝码称重 2
    HDU4614【线段树。】
    Spark安装
    广度优先搜索
    MongoDB 操作手冊CRUD 更新 update
    HiWorkV1.3版震撼公布,今日起正式公开測试!
    织梦调用父级栏目链接和名称
    使用Blender批量导出/转换模型
  • 原文地址:https://www.cnblogs.com/weilaibuxiangshuo/p/10401044.html
Copyright © 2011-2022 走看看