python如何生成网页验证码


Posted in Python onJuly 28, 2018

本文实例为大家分享了python生成网页验证码的具体代码,供大家参考,具体内容如下

验证码为pil模块生成,可直接应用于django框架当中。

首先需要安装Pillow模块 我们这里使用的版本为3.4.1
终端中直接输入指令 pip install Pillow==3.4.1

from PIL import Image, ImageDraw, ImageFont
from django.utils.six import BytesIO

def verify_code(request):
  #引入随机函数模块
  import random
  #定义变量,用于画面的背景色、宽、高
  bgcolor = (random.randrange(20, 100), random.randrange(
    20, 100), 255)
  width = 100
  height = 25
  #创建画面对象
  im = Image.new('RGB', (width, height), bgcolor)
  #创建画笔对象
  draw = ImageDraw.Draw(im)
  #调用画笔的point()函数绘制噪点
  for i in range(0, 100):
    xy = (random.randrange(0, width), random.randrange(0, height))
    fill = (random.randrange(0, 255), 255, random.randrange(0, 255))
    draw.point(xy, fill=fill)
  #定义验证码的备选值
  str1 = 'ABCD123EFGHIJK456LMNOPQRS789TUVWXYZ0'
  #随机选取4个值作为验证码
  rand_str = ''
  for i in range(0, 4):
    rand_str += str1[random.randrange(0, len(str1))]
  #构造字体对象,ubuntu的字体路径为“/usr/share/fonts/truetype/freefont”
  font = ImageFont.truetype('FreeMono.ttf', 23)
  #构造字体颜色
  fontcolor = (255, random.randrange(0, 255), random.randrange(0, 255))
  #绘制4个字
  draw.text((5, 2), rand_str[0], font=font, fill=fontcolor)
  draw.text((25, 2), rand_str[1], font=font, fill=fontcolor)
  draw.text((50, 2), rand_str[2], font=font, fill=fontcolor)
  draw.text((75, 2), rand_str[3], font=font, fill=fontcolor)
  #释放画笔
  del draw
  #存入session,用于做进一步验证
  request.session['verifycode'] = rand_str
  #内存文件操作
  buf = BytesIO()
  #将图片保存在内存中,文件类型为png
  im.save(buf, 'png')
  #将内存中的图片数据返回给客户端,MIME类型为图片png
  return HttpResponse(buf.getvalue(), 'image/png'

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
跟老齐学Python之使用Python查询更新数据库
Nov 25 Python
python3.x实现发送邮件功能
May 22 Python
python 统计一个列表当中的每一个元素出现了多少次的方法
Nov 14 Python
Pycharm设置utf-8自动显示方法
Jan 17 Python
python实现五子棋游戏
Jun 18 Python
python selenium循环登陆网站的实现
Nov 04 Python
wxpython多线程防假死与线程间传递消息实例详解
Dec 13 Python
Python 实现判断图片格式并转换,将转换的图像存到生成的文件夹中
Jan 13 Python
Python多线程通信queue队列用法实例分析
Mar 24 Python
Django之choices选项和富文本编辑器的使用详解
Apr 01 Python
python为什么会环境变量设置不成功
Jun 23 Python
Jupyter Notebook 远程访问配置详解
Jan 11 Python
python3利用tcp实现文件夹远程传输
Jul 28 #Python
python使用tornado实现简单爬虫
Jul 28 #Python
python编写简易聊天室实现局域网内聊天功能
Jul 28 #Python
对tensorflow 的模型保存和调用实例讲解
Jul 28 #Python
Python Socket编程之多线程聊天室
Jul 28 #Python
python实现点对点聊天程序
Jul 28 #Python
基于python实现聊天室程序
Jul 27 #Python
You might like
xml+php动态载入与分页
2006/10/09 PHP
hadoop常见错误以及处理方法详解
2013/06/19 PHP
PHP中定义数组常量(array常量)的方法
2014/11/17 PHP
PHP 使用位运算实现四则运算的代码
2021/03/09 PHP
学习jquery之一
2007/04/27 Javascript
W3C Group的JavaScript1.8 新特性介绍
2009/05/19 Javascript
javascript IFrame 强制刷新代码
2009/07/23 Javascript
javascript Array.sort() 跨浏览器下需要考虑的问题
2009/12/07 Javascript
基于jquery的textarea发布框限制文字字数输入(添加中文识别)
2012/02/16 Javascript
js数组去重的常用方法总结
2014/01/24 Javascript
jQuery实现图片走马灯效果的原理分析
2016/01/16 Javascript
jQuery隐藏和显示效果实现
2016/04/06 Javascript
简单讲解jQuery中的子元素过滤选择器
2016/04/18 Javascript
nodejs基于WS模块实现WebSocket聊天功能的方法
2018/01/12 NodeJs
jQuery 改变P标签文本值方法
2018/02/24 jQuery
微信小程序登录按钮遮罩浮层效果的实现方法
2018/12/16 Javascript
在Gnumeric下使用Python脚本操作表格的教程
2015/04/14 Python
python实现的jpg格式图片修复代码
2015/04/21 Python
python使用psutil模块获取系统状态
2016/08/27 Python
python通过getopt模块如何获取执行的命令参数详解
2017/12/29 Python
Python最小二乘法矩阵
2019/01/02 Python
详解Python self 参数
2019/08/30 Python
Python爬取数据并实现可视化代码解析
2020/08/12 Python
python subprocess pipe 实时输出日志的操作
2020/12/05 Python
html5 制作地图当前定位箭头的方法示例
2020/01/10 HTML / CSS
美国男士内衣品牌:Tommy John
2017/12/22 全球购物
Ibatis如何使用动态表名
2015/07/12 面试题
幼师自荐信范文
2013/10/06 职场文书
学生档案自我鉴定
2013/10/07 职场文书
旅游管理专业生自荐信范文
2014/01/02 职场文书
恶搞卫生巾广告词
2014/03/18 职场文书
青春演讲稿范文
2014/05/08 职场文书
经营理念标语
2014/06/21 职场文书
2014年9.18纪念日演讲稿
2014/09/14 职场文书
2014年党员自我评议总结
2014/09/23 职场文书
房地产工程部经理岗位职责
2015/04/09 职场文书