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常规方法实现数组的全排列
Mar 17 Python
用Python实现命令行闹钟脚本实例
Sep 05 Python
python数据处理 根据颜色对图片进行分类的方法
Dec 08 Python
python 生成器和迭代器的原理解析
Oct 12 Python
Python 生成器,迭代,yield关键字,send()传参给yield语句操作示例
Oct 12 Python
python图的深度优先和广度优先算法实例分析
Oct 26 Python
python能开发游戏吗
Jun 11 Python
python线性插值解析
Jul 05 Python
Python通过Schema实现数据验证方式
Nov 12 Python
pymysql模块使用简介与示例
Nov 17 Python
python opencv肤色检测的实现示例
Dec 21 Python
selenium3.0+python之环境搭建的方法步骤
Feb 01 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
PHP 简单数组排序实现代码
2009/08/05 PHP
使用PHP实现二分查找算法代码分享
2011/06/24 PHP
用Zend Studio+PHPnow+Zend Debugger搭建PHP服务器调试环境步骤
2014/01/19 PHP
一个不易被发现的PHP后门代码解析
2014/07/05 PHP
十大使用PHP框架的理由
2015/09/26 PHP
PHP下 Mongodb 连接远程数据库的实例代码
2017/08/30 PHP
php数据结构之顺序链表与链式线性表示例
2018/01/22 PHP
PHP5.0~5.6 各版本兼容性cURL文件上传功能实例分析
2018/05/11 PHP
Laravel 已登陆用户再次查看登陆页面的自动跳转设置方法
2019/09/30 PHP
深入解析PHP底层机制及相关原理
2020/12/11 PHP
JavaScript实现快速排序(自已编写)
2012/12/19 Javascript
javascript if条件判断方法小结
2014/05/17 Javascript
js下将阿拉伯数字每三位一逗号分隔(如:15000000转化为15,000,000)
2014/06/02 Javascript
JavaScript实现的GBK、UTF8字符串实际长度计算函数
2014/08/27 Javascript
基于js实现投票的实例代码
2015/08/04 Javascript
bootstrap-table.js扩展分页工具栏(增加跳转到xx页)功能
2017/12/28 Javascript
js判断文件类型大小并给出提示的实现方法
2018/01/03 Javascript
vue中使用v-model完成组件间的通信
2019/08/22 Javascript
vue-dplayer 视频播放器实例代码
2019/11/08 Javascript
javascript自定义右键菜单插件
2019/12/16 Javascript
深度解读vue-resize的具体用法
2020/07/08 Javascript
用smtplib和email封装python发送邮件模块类分享
2014/02/17 Python
对python的bytes类型数据split分割切片方法
2018/12/04 Python
Python编程flask使用页面模版的方法
2018/12/28 Python
PyQtGraph在pyqt中的应用及安装过程
2019/08/04 Python
利用python实现周期财务统计可视化
2019/08/25 Python
根据tensor的名字获取变量的值方式
2020/01/04 Python
tensorflow estimator 使用hook实现finetune方式
2020/01/21 Python
Python 判断时间是否在时间区间内的实例
2020/05/16 Python
使用Python FastAPI构建Web服务的实现
2020/06/08 Python
jupyter notebook远程访问不了的问题解决方法
2021/01/11 Python
人力资源管理专业应届生求职信
2013/09/28 职场文书
大学军训感言200字
2014/02/26 职场文书
表扬信范文
2015/05/04 职场文书
python函数指定默认值的实例讲解
2021/03/29 Python
python opencv旋转图片的使用方法
2021/06/04 Python