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抓取网页正文的源码
Jun 11 Python
Python中elasticsearch插入和更新数据的实现方法
Apr 01 Python
Python wxPython库使用wx.ListBox创建列表框示例
Sep 03 Python
python全栈要学什么 python全栈学习路线
Jun 28 Python
利用Python进行图像的加法,图像混合(附代码)
Jul 14 Python
wxPython实现分隔窗口
Nov 19 Python
通过 Python 和 OpenCV 实现目标数量监控
Jan 05 Python
浅谈python的elementtree模块处理中文注意事项
Mar 06 Python
如何以Winsows Service方式运行JupyterLab
Aug 30 Python
PyTorch中Tensor的数据类型和运算的使用
Sep 03 Python
python实现发送带附件的邮件代码分享
Sep 22 Python
基于Python中Remove函数的用法讨论
Dec 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配置文件中最常用四个ini函数
2007/03/19 PHP
php数组函数序列之prev() - 移动数组内部指针到上一个元素的位置,并返回该元素值
2011/10/31 PHP
Zend Framework教程之Loader以及PluginLoader用法详解
2016/03/09 PHP
yii2超好用的日期组件和时间组件
2016/05/05 PHP
php cookie 详解使用实例
2016/11/03 PHP
laravel实现上传图片的两种方式小结
2019/10/12 PHP
Js 刷新框架页的代码
2010/04/13 Javascript
Wordpress ThickBox 点击图片显示下一张图的修改方法
2010/12/11 Javascript
nodejs win7下安装方法
2012/05/24 NodeJs
javascript实现div的拖动并调整大小类似qq空间个性编辑模块
2012/12/12 Javascript
html5的自定义data-*属性和jquery的data()方法的使用示例
2013/08/21 Javascript
jQuery.event兼容各浏览器的event详细解析
2013/12/18 Javascript
原生js结合html5制作简易的双色子游戏
2015/03/30 Javascript
最原始的jQuery注册验证方式
2016/10/11 Javascript
js实现抽奖效果
2017/03/27 Javascript
Vue实现typeahead组件功能(非常靠谱)
2017/08/26 Javascript
webpack配置导致字体图标无法显示的解决方法
2018/03/06 Javascript
Vue.js轮播图走马灯代码实例(全)
2019/05/08 Javascript
vue+element实现表格新增、编辑、删除功能
2019/05/28 Javascript
原生js+ajax分页组件
2020/01/30 Javascript
[00:39]DOTA2上海特级锦标赛 Liquid战队宣传片
2016/03/04 DOTA
深度剖析使用python抓取网页正文的源码
2014/06/11 Python
python中字典dict常用操作方法实例总结
2015/04/04 Python
Python中的数据对象持久化存储模块pickle的使用示例
2016/03/03 Python
详解字典树Trie结构及其Python代码实现
2016/06/03 Python
Django中的Signal代码详解
2018/02/05 Python
我用Python抓取了7000 多本电子书案例详解
2019/03/25 Python
Python人脸识别第三方库face_recognition接口说明文档
2019/05/03 Python
Django app配置多个数据库代码实例
2019/12/17 Python
利用CSS3制作简单的3d半透明立方体图片展示
2017/03/25 HTML / CSS
AmazeUI 图标的示例代码
2020/08/13 HTML / CSS
Bravofly德国:预订廉价航班和酒店
2019/09/22 全球购物
医院学雷锋活动策划方案
2014/02/15 职场文书
难忘的一课教学反思
2014/04/30 职场文书
企业宣传语大全
2015/07/13 职场文书
浅谈Python 中的复数问题
2021/05/19 Python