zoukankan      html  css  js  c++  java
  • 登录页面随机图形验证码

    具体实现效果如下:

      点击图片会改变验证

    后端代码:

    from PIL import Image,ImageDraw,ImageFont
    from io import BytesIO,StringIO
    #色彩的设置为(*,*,*),所以随机返回三个数
    def r_num(number):
       #number为2指的是背景颜色,把背景颜色和字体颜色分开,不然当颜色一样时,不容易看到
        if number==2:
            return random.randint(0,128),random.randint(0,128),random.randint(0,128)
        #number==1指的是字体颜色,字体颜色深一些比较养眼
        if number == 1:
            return random.randint(128, 255), random.randint(128, 255), random.randint(128, 255)
    def yzm(request):
        #创建一个Image对象,‘RGB’是颜色的模式。第二个参数是验证码的大小。第三个参数是三个随机数,当然也用英语单词指定颜色,比如red,这里为了随机性选择了用三个数字
        yzm_img=Image.new("RGB",(260,40),r_num(1))
       #为yzm_img对象创建一个画笔
        draw=ImageDraw.Draw(yzm_img)
        #指定字体的格式,ttf文件自己在网上下载,放入static文件夹中,40指的是字体的大小
        font=ImageFont.truetype('static/1.ttf',40)
        #存放验证码
        code=''
        #循环5次,所以验证码是5位
        for i in range(5):
            #随机0到9的数字
            random_num=str(random.randint(0,9))
           #随机65到90的数字,chr是把数字对比ASCLL码表转为字母。65到90是大写字母
            random_up=str(chr(random.randint(65,90)))
            #同上,随机小写字母
            random_low=str(chr(random.randint(97,122)))
    #从三个字符中随机选取出一个        
     random_code=random.choice([random_num,random_up,random_low])
            #把字符写入图片。第一个参数(x,y),坐标,如果坐标位置写死,那么将会全部挤到一起,第二个参数,指定写入的字符。第三参数指定字符的格式
            draw.text((45*i,-5),random_code,r_num(2),font)
            code+=random_code
        io_obj=BytesIO()
        #把图片存放到内存空间中
        yzm_img.save(io_obj,'png')
        #给session中添加验证码
        request.session['code']=code
        #返回二进制数据
        return HttpResponse(io_obj.getvalue())

    前端代码:

    <div class="container">
        <div class="row">
            <div class="col-md-6">
                 <label for="yzm_id">验证码:</label>
                 <input type="text" class="form-control" id="yzm_id" placeholder="" name="yzm">
             </div>
            <div class="col-md-6">
                 <img id='yzm_img_id' src="/yzm/" alt="" style=" 260px;height: 40px">
            </div>
         </div>
     <div> 

    这里用到了Bootstrap的栅格系统各占6格使得整个页面样式显得更加美观

    最后只要添加点击事件便可以完成简易的验证码校验了

    <script>
        $('#id_img').click(function(){
            var oldPath=$(this).attr('src');
            $(this).attr('src',oldPath+='?')
        });
    </script>
  • 相关阅读:
    Root Android and Install Recovery linux shell script & Android root原理
    MPEG4 144962和H.264什么区别?
    Android root的两种方法 udev漏洞和setuid漏洞
    [转载]android三个特殊的资源目录 /res/xml /res/raw 和 /assets
    avast注册号|好用的avast注册号|没过期avast注册号
    忘记烦恼|如何忘记烦恼|忘记烦恼的方法
    第六感|最近又出现第六感了这个是什么问题呢
    移动手机为什么还有话费,就停机了,和客服的谈话
    .net保存中文到cookie时是乱码取出来的时候
    skype账号|超值skype账号|14分钟skype账号|1元40个|15天有效期
  • 原文地址:https://www.cnblogs.com/gengbinjia/p/10818392.html
Copyright © 2011-2022 走看看