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 输出一个两行字符的变量
Feb 05 Python
Python 字典dict使用介绍
Nov 30 Python
Python中一些自然语言工具的使用的入门教程
Apr 13 Python
基于Python 装饰器装饰类中的方法实例
Apr 21 Python
Python实现的远程登录windows系统功能示例
Jun 21 Python
python模拟登陆,用session维持回话的实例
Dec 27 Python
使用Python实现分别输出每个数组
Dec 06 Python
在tensorflow中设置使用某一块GPU、多GPU、CPU的操作
Feb 07 Python
python 中的[:-1]和[::-1]的具体使用
Feb 13 Python
在tensorflow实现直接读取网络的参数(weight and bias)的值
Jun 24 Python
Pytorch 卷积中的 Input Shape用法
Jun 29 Python
Python基础 括号()[]{}的详解
Nov 07 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
一个用php3编写的简单计数器
2006/10/09 PHP
一些常用的php函数
2006/12/06 PHP
windows下PHP_intl.dll正确配置方法(apache2.2+php5.3.5)
2014/01/14 PHP
php中unserialize返回false的解决方法
2014/09/22 PHP
Yii中的relations数据关联查询及统计功能用法详解
2016/07/14 PHP
推荐:极酷右键菜单
2006/11/29 Javascript
强悍无比的WEB开发好助手FireBug(Firefox Plugin)
2007/01/16 Javascript
jquery.boxy插件的iframe扩展代码
2010/07/02 Javascript
深入理解JavaScript系列(16) 闭包(Closures)
2012/04/12 Javascript
js事件(Event)知识整理
2012/10/11 Javascript
Js获取下拉框选定项的值和文本的实现代码
2014/02/26 Javascript
最新最热最实用的15个jQuery插件汇总
2015/07/05 Javascript
jQuery实现鼠标滑过点击事件音效试听
2015/08/31 Javascript
跟我学习javascript的隐式强制转换
2015/11/16 Javascript
全面解析Bootstrap表单使用方法(表单控件状态)
2015/11/24 Javascript
基于JavaScript实现通用tab选项卡(通用性强)
2016/01/07 Javascript
javascript断点调试心得分享
2016/04/23 Javascript
nodejs body-parser 解析post数据实例
2017/07/26 NodeJs
深入浅析Vue中的Prop
2018/06/10 Javascript
[00:37]DOTA2上海特级锦标赛 Secert 战队宣传片
2016/03/03 DOTA
Python Web框架Flask中使用百度云存储BCS实例
2015/02/08 Python
以Flask为例讲解Python的框架的使用方法
2015/04/29 Python
python 遍历字符串(含汉字)实例详解
2017/04/04 Python
Python基于win32ui模块创建弹出式菜单示例
2018/05/09 Python
CentOS 7 安装python3.7.1的方法及注意事项
2018/11/01 Python
Python中的self用法详解
2019/08/06 Python
python爬虫 正则表达式解析
2019/09/28 Python
keras实现多GPU或指定GPU的使用介绍
2020/06/17 Python
Python接口自动化测试的实现
2020/08/28 Python
h5页面唤起app如果没安装就跳转下载(iOS和Android)
2020/06/03 HTML / CSS
巴西电子、家电、智能手机购物网站:Girafa
2019/06/04 全球购物
初中生期末考试的自我评价
2013/12/17 职场文书
《小鹰学飞》教学反思
2014/04/23 职场文书
公证委托书格式
2014/09/13 职场文书
2014年综治维稳工作总结
2014/11/17 职场文书
Python 如何解决稀疏矩阵运算
2021/05/26 Python