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监控网卡流量并使用graphite绘图的示例
Apr 27 Python
python Django批量导入数据
Mar 25 Python
python 3利用BeautifulSoup抓取div标签的方法示例
May 28 Python
Python网络编程 Python套接字编程
Sep 13 Python
使用Python读取大文件的方法
Feb 11 Python
Python之time模块的时间戳,时间字符串格式化与转换方法(13位时间戳)
Aug 12 Python
Python FTP文件定时自动下载实现过程解析
Nov 12 Python
Python更换pip源方法过程解析
May 19 Python
如何理解Python中的变量
Jun 01 Python
Selenium python时间控件输入问题解决方案
Jul 22 Python
【超详细】八大排序算法的各项比较以及各自特点
Mar 31 Python
Pytorch数据读取之Dataset和DataLoader知识总结
May 23 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
elgg 获取文件图标地址的方法
2010/03/20 PHP
PHP用GD库生成高质量的缩略图片
2011/03/09 PHP
在SAE上搭建最新wordpress的方法
2014/12/21 PHP
Laravel5.4简单实现app接口Api Token认证方法
2019/08/29 PHP
图片自动缩小 点击放大
2008/07/07 Javascript
js操作select控件的几种方法
2010/06/02 Javascript
jQuery中change事件用法实例
2014/12/26 Javascript
使用Sticky组件实现带sticky效果的tab导航和滚动导航的方法
2016/03/22 Javascript
EasyUi中的Combogrid 实现分页和动态搜索远程数据
2016/04/01 Javascript
AngularJs表单验证实例详解
2016/05/30 Javascript
JS继承之借用构造函数继承和组合继承
2016/09/07 Javascript
Bootstrap布局之栅格系统学习笔记
2017/05/04 Javascript
JS实现上传图片实时预览功能
2017/05/22 Javascript
Web制作验证码功能实例代码
2017/06/19 Javascript
js中变量的连续赋值(实例讲解)
2017/07/08 Javascript
使用nvm管理不同版本的node与npm的方法
2017/10/31 Javascript
解决Webpack 热部署检测不到文件变化的问题
2018/02/22 Javascript
layui 上传图片 返回图片地址的方法
2019/09/26 Javascript
nodejs实现UDP组播示例方法
2019/11/04 NodeJs
纯js+css实现仿移动端淘宝网站的弹出详情框功能
2019/12/29 Javascript
vue 检测用户上传图片宽高的方法
2020/02/06 Javascript
详解在Python中处理异常的教程
2015/05/24 Python
使用python模拟高斯分布例子
2019/12/09 Python
python opencv实现图片缺陷检测(讲解直方图以及相关系数对比法)
2020/04/07 Python
设置jupyter中DataFrame的显示限制方式
2020/04/12 Python
Django项目uwsgi+Nginx保姆级部署教程实现
2020/04/19 Python
python实现mask矩阵示例(根据列表所给元素)
2020/07/30 Python
python中实现栈的三种方法
2020/12/19 Python
Sql面试题
2013/03/20 面试题
Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型
2013/10/30 面试题
大一学生职业生涯规划
2014/03/11 职场文书
七匹狼男装广告词
2014/03/21 职场文书
领导班子遵守党的政治纪律情况对照检查材料
2014/09/26 职场文书
副校长个人对照检查材料思想汇报
2014/10/04 职场文书
2019暑假阅读倡议书
2019/06/24 职场文书
Java由浅入深通关抽象类与接口(下篇)
2022/04/26 Java/Android