Python生成验证码实例


Posted in Python onAugust 21, 2014

本文实例展示了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生成验证码实例

Python 相关文章推荐
Python 冒泡,选择,插入排序使用实例
Feb 05 Python
讲解Python中运算符使用时的优先级
May 14 Python
最大K个数问题的Python版解法总结
Jun 16 Python
Python 字符串大小写转换的简单实例
Jan 21 Python
使用XML库的方式,实现RPC通信的方法(推荐)
Jun 14 Python
详解python里的命名规范
Jul 16 Python
一行代码让 Python 的运行速度提高100倍
Oct 08 Python
浅谈python脚本设置运行参数的方法
Dec 03 Python
PYQT5设置textEdit自动滚屏的方法
Jun 14 Python
python+Django+pycharm+mysql 搭建首个web项目详解
Nov 29 Python
pycharm工具连接mysql数据库失败问题
Apr 01 Python
python 基于wx实现音乐播放
Nov 24 Python
python中去空格函数的用法
Aug 21 #Python
python实现的重启关机程序实例
Aug 21 #Python
实例讲解Python中的私有属性
Aug 21 #Python
Python创建日历实例
Aug 21 #Python
Python实现批量把SVG格式转成png、pdf格式的代码分享
Aug 21 #Python
python生成日历实例解析
Aug 21 #Python
MySQLdb ImportError: libmysqlclient.so.18解决方法
Aug 21 #Python
You might like
PHP session常见问题集锦及解决办法总结
2007/03/18 PHP
PHP 数组遍历方法大全(foreach,list,each)
2010/06/30 PHP
PHP图片处理类 phpThumb参数用法介绍
2012/03/11 PHP
smarty模板中使用get、post、request、cookies、session变量的方法
2014/04/24 PHP
PHP 只允许指定IP访问(允许*号通配符过滤IP)
2014/07/08 PHP
PHP中使用curl伪造IP的简单方法
2015/08/07 PHP
JSON两种结构之对象和数组的理解
2016/07/19 PHP
PHP 实现公历日期与农历日期的互转换
2017/09/13 PHP
javascript实现动态CSS换肤技术的脚本
2007/06/29 Javascript
基于MooTools的很有创意的滚动条时钟动画
2010/11/14 Javascript
js批量设置样式的三种方法不推荐使用with
2013/02/25 Javascript
jQuery客户端分页实例代码
2013/11/18 Javascript
浅谈JavaScript字符集
2014/05/22 Javascript
jQuery绑定事件on()与弹窗的简要概述
2016/04/27 Javascript
最简单纯JavaScript实现Tab标签页切换的方式(推荐)
2016/07/25 Javascript
js中遍历对象的属性和值的方法
2016/07/27 Javascript
jQuery插件版本冲突的处理方法分析
2017/01/16 Javascript
Vue插件写、用详解(附demo)
2017/03/20 Javascript
Egg.js 中 AJax 上传文件获取参数的方法
2018/10/10 Javascript
[46:38]完美世界DOTA2联赛PWL S2 Magma vs PXG 第三场 11.28
2020/12/02 DOTA
下载糗事百科的内容_python版
2008/12/07 Python
python实现进程间通信简单实例
2014/07/23 Python
使用Python制作一个打字训练小工具
2019/10/01 Python
python解压zip包中文乱码解决方法
2020/11/27 Python
你不知道的葡萄干处理法、橙蜜处理法、二氧化碳酵母法
2021/03/17 冲泡冲煮
HTML5 Canvas之测试浏览器是否支持Canvas的方法
2015/01/01 HTML / CSS
Vans英国官方网站:美国南加州的原创极限运动潮牌
2017/01/20 全球购物
美国顶级水上运动专业店:Marine Products
2018/04/15 全球购物
英国最大的正宗复古足球衫制造商和零售商:TOFFS
2018/06/21 全球购物
如何填写个人简历自我评价
2013/12/10 职场文书
公司大门门卫岗位职责
2014/06/11 职场文书
家长会欢迎词
2015/01/23 职场文书
2015年项目工作总结
2015/04/29 职场文书
大学学生会主席竞选稿怎么写?
2019/08/19 职场文书
Python Parser的用法
2021/05/12 Python
Mysql systemctl start mysqld报错的问题解决
2021/06/03 MySQL