Python生成验证码实例

yipeiwu_com6年前Python基础

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

前台页面代码如下:

<div>
 <img id="authcode_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

程序效果如下:

相关文章

使用 python pyautogui实现鼠标键盘控制功能

pyautogui是一个可以控制鼠标和键盘的python库,类似的还有pywin32。 pyautogui的安装 pip3 install python3-xlib 依赖库 sudo a...

python实现祝福弹窗效果

python实现祝福弹窗效果

中秋节,是中国传统节日之一,为每年的农历八月十五,也是我国仅次于春节的第二大传统节日。传说是为了纪念嫦娥。 祝大家中秋快乐 中秋节,怎么用python祝福大家节日快乐是一个很头疼的事,但...

用Django实现一个可运行的区块链应用

用Django实现一个可运行的区块链应用

对数字货币的崛起感到新奇的我们,并且想知道其背后的技术——区块链是怎样实现的。   但是完全搞懂区块链并非易事,我喜欢在实践中学习,通过写代码来学习技术会掌握得更牢固。通过构建...

基于循环神经网络(RNN)实现影评情感分类

使用循环神经网络(RNN)实现影评情感分类 作为对循环神经网络的实践,我用循环神经网络做了个影评情感的分类,即判断影评的感情色彩是正面的,还是负面的。 选择使用RNN来做情感分类,主要是...

Pandas聚合运算和分组运算的实现示例

1.聚合运算 (1)使用内置的聚合运算函数进行计算 1>内置的聚合运算函数 sum(),mean(),max(),min(),size(),describe()...等等 2...