当前位置 博文首页 > Python生成验证码实例

    Python生成验证码实例

    作者:admin 时间:2021-07-12 18:36

    本文实例展示了Python生成验证码的方法,具有很好的实用价值。分享给大家供大家参考。具体实现方法如下:

    前台页面代码如下:

    <div>
     <img  alt="验证码" src="/registration/makeimage/{{time}}"/>  
     <!-- time 任意随机数(时间戳),防止页面缓存 导致验证码不能更新-->
     <a href="javascript:refreshCode();" rel="external nofollow" style="color:blue;">看不清换一张</a>
    </div>
    
    <script>
     function refreshCode() {
       $('authcode_img').src = "/registration/makeimage/" + Math.random();
     }
    </script>
    
    

    后台程序如下:

    import StringIO
    import Image, ImageDraw, ImageFont, random  #相应的模块需要安装
    from xxx.settings import authcode_font #请确保改字体存在
    
    def make_image(request):
      mp = hashlib.md5()
      mp.update(str(datetime.datetime.now())+str(random.random()))  
      mp_src = mp.hexdigest()
      rand_str = mp_src[0:6]
      font = ImageFont.truetype(authcode_font, 25)
      width = 75
      height = 30
      im = Image.new('RGB',(width,height),'#%s'%mp_src[-7:-1])
      draw = ImageDraw.Draw(im)
      draw.line((random.randint(0,width),random.randint(0,height),random.randint(0,width),random.randint(0,height)))
      draw.line((random.randint(0,width),random.randint(0,height),random.randint(0,width),random.randint(0,height)))
      draw.line((random.randint(0,width),random.randint(0,height),random.randint(0,width),random.randint(0,height)))
      draw.line((random.randint(0,width),random.randint(0,height),random.randint(0,width),random.randint(0,height)))
      draw.line((random.randint(0,width),random.randint(0,height),random.randint(0,width),random.randint(0,height)))
      draw.text((5,2), rand_str, font=font)  
      del draw  
      buffer = StringIO.StringIO()
      im.save(buffer,'jpeg')
      httpResponse = HttpResponse(content=buffer.getvalue(),mimetype="image/jpeg")
      request.session['auth_code'] = rand_str
      return httpResponse
    
    

    程序效果如下:

    jsjbwy