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 24 Python
在Heroku云平台上部署Python的Django框架的教程
Apr 20 Python
Python基于Socket实现的简单聊天程序示例
Aug 05 Python
Python实现找出数组中第2大数字的方法示例
Mar 26 Python
python 地图经纬度转换、纠偏的实例代码
Aug 06 Python
python简单验证码识别的实现方法
May 10 Python
Tensorflow实现酸奶销量预测分析
Jul 19 Python
基于python中__add__函数的用法
Nov 25 Python
python取均匀不重复的随机数方式
Nov 27 Python
python Canny边缘检测算法的实现
Apr 24 Python
Python调用shell命令常用方法(4种)
May 11 Python
Python 实现3种回归模型(Linear Regression,Lasso,Ridge)的示例
Oct 15 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/03/10 PHP
php表单提交问题的解决方法
2011/04/12 PHP
关于PHP实现异步操作的研究
2013/02/03 PHP
带密匙的php加密解密示例分享
2014/01/29 PHP
PHP给文字内容中的关键字进行套红处理
2016/04/12 PHP
简单实现php上传文件功能
2017/09/21 PHP
PHP示例演示发送邮件给某个邮箱
2019/04/03 PHP
详解laravel passport OAuth2.0的4种模式
2019/11/04 PHP
在UpdatePanel内jquery easyui效果失效的解决方法
2010/04/11 Javascript
asp.net下使用jquery 的ajax+WebService+json 实现无刷新取后台值的实现代码
2010/09/19 Javascript
关于JavaScript的with 语句的使用方法
2011/05/09 Javascript
jquery创建一个新的节点对象(自定义结构/内容)的好方法
2013/01/21 Javascript
html超链接打开窗口大小的方法
2013/03/05 Javascript
如何获取网站icon有哪些可行的方法
2014/06/05 Javascript
基于jQuery实现交互体验社会化分享代码附源码下载
2016/01/04 Javascript
通过扫描二维码打开app的实现代码
2016/11/10 Javascript
让网站自动生成章节目录索引的多个js代码
2018/01/07 Javascript
vue-prop父组件向子组件进行传值的方法
2018/03/01 Javascript
深入浅析Vue中的slots/scoped slots
2018/04/03 Javascript
Python爬虫代理IP池实现方法
2017/01/05 Python
TensorFlow在MAC环境下的安装及环境搭建
2017/11/14 Python
Python自然语言处理之词干,词形与最大匹配算法代码详解
2017/11/16 Python
解决python删除文件的权限错误问题
2018/04/24 Python
python 文件查找及内容匹配方法
2018/10/25 Python
Python全栈之列表数据类型详解
2019/10/01 Python
Python使用微信接入图灵机器人过程解析
2019/11/04 Python
Python基于pyecharts实现关联图绘制
2020/03/27 Python
pytorch cuda上tensor的定义 以及减少cpu的操作详解
2020/06/23 Python
python批量修改交换机密码的示例
2020/09/22 Python
英国票务网站:Ticketmaster英国
2018/08/27 全球购物
Ajax主要包含了哪些技术
2014/06/12 面试题
计算机系毕业生推荐信
2013/11/06 职场文书
股东协议书范本
2014/04/14 职场文书
学校节水倡议书
2015/04/29 职场文书
幼儿园体操比赛口号
2015/12/25 职场文书
golang 如何通过反射创建新对象
2021/04/28 Golang