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 元类使用说明
Dec 18 Python
使用C#配合ArcGIS Engine进行地理信息系统开发
Feb 19 Python
python图像常规操作
Nov 11 Python
简单实现python聊天程序
Apr 01 Python
python实现泊松图像融合
Jul 26 Python
Python 从相对路径下import的方法
Dec 04 Python
Python2和3字符编码的区别知识点整理
Aug 08 Python
python发qq消息轰炸虐狗好友思路详解(完整代码)
Feb 15 Python
Python如何用wx模块创建文本编辑器
Jun 07 Python
如何使用Django Admin管理后台导入CSV
Nov 06 Python
python opencv肤色检测的实现示例
Dec 21 Python
Python 键盘事件详解
Nov 11 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的返回引用和局部静态变量
2015/06/04 PHP
在PHP语言中使用JSON和将json还原成数组的方法
2016/07/19 PHP
Redis构建分布式锁
2017/03/28 PHP
setAttribute 与 class冲突解决
2008/02/17 Javascript
详谈表单格式化插件jquery.serializeJSON
2017/06/23 jQuery
Node接收电子邮件的实例代码
2017/07/21 Javascript
Bootstrap实现的表格合并单元格示例
2018/02/06 Javascript
详解Vue中watch的详细用法
2018/11/28 Javascript
node.js中express模块创建服务器和http模块客户端发请求
2019/03/06 Javascript
vue组件化中slot的基本使用方法
2019/05/01 Javascript
Vue 中如何正确引入第三方模块的方法步骤
2019/05/05 Javascript
vue-cli脚手架打包静态资源请求出错的原因与解决
2019/06/06 Javascript
微信小程序 腾讯地图显示偏差问题解决
2019/07/27 Javascript
Javascript原生ajax请求代码实例
2020/02/20 Javascript
JS前端面试必备——基本排序算法原理与实现方法详解【插入/选择/归并/冒泡/快速排序】
2020/02/24 Javascript
JavaScript中的各种宽高属性的实现
2020/05/08 Javascript
[48:22]VGJ.S vs VG 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
Python中的下划线详解
2015/06/24 Python
python读取excel表格生成erlang数据
2017/08/26 Python
python如何去除字符串中不想要的字符
2020/07/05 Python
Python 找到列表中满足某些条件的元素方法
2018/06/26 Python
python实现汽车管理系统
2018/11/30 Python
Python随机生成身份证号码及校验功能
2018/12/04 Python
Python使用itchat模块实现群聊转发,自动回复功能示例
2019/08/26 Python
Django中使用Json返回数据的实现方法
2020/06/03 Python
Html5移动端弹幕动画实现示例代码
2018/08/27 HTML / CSS
英国著名的小众美容品牌网站:Alyaka
2017/08/08 全球购物
Speedo速比涛德国官方网站:世界领先的泳装品牌
2019/08/26 全球购物
ShellScript面试题一则-ShellScript编程
2014/03/05 面试题
拓展培训心得体会
2014/01/04 职场文书
连锁酒店店长职责范本
2014/02/13 职场文书
淮阳太昊陵导游词
2015/02/10 职场文书
面试复试通知单
2015/04/24 职场文书
元旦晚会开场白
2015/05/29 职场文书
党支部综合考察意见
2015/06/01 职场文书
2016年第32个教师节致辞
2015/11/26 职场文书