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中的变量的数据类型
May 13 Python
python编写爬虫小程序
May 14 Python
python实现查找excel里某一列重复数据并且剔除后打印的方法
May 26 Python
wxPython中listbox用法实例详解
Jun 01 Python
Python程序中的观察者模式结构编写示例
May 27 Python
Django数据库操作的实例(增删改查)
Sep 04 Python
Python验证文件是否可读写代码分享
Dec 11 Python
python使用zip将list转为json的方法
Dec 31 Python
python提取照片坐标信息的实例代码
Aug 14 Python
通过实例解析Python文件操作实现步骤
Sep 21 Python
Pycharm快捷键配置详细整理
Oct 13 Python
基于Python实现对比Exce的工具
Apr 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
在windows iis5下安装php4.0+mysql之我见
2006/10/09 PHP
php读取xml实例代码
2010/01/28 PHP
PHP开启gzip页面压缩实例代码
2010/03/11 PHP
解析PHP缓存函数的使用说明
2013/05/10 PHP
php多文件上传下载示例分享
2014/02/20 PHP
laravel利用中间件防止未登录用户直接访问后台的方法
2019/09/30 PHP
php实现根据身份证获取精准年龄
2020/02/26 PHP
Extjs中RowExpander控件的默认展开问题示例探讨
2014/01/24 Javascript
使用typeof判断function是否存在于上下文
2014/08/14 Javascript
JS实现文字掉落效果的方法
2015/05/06 Javascript
基于jquery实现在线选座订座之影院篇
2015/08/24 Javascript
总结javascript中的六种迭代器
2016/08/16 Javascript
js HTML5手机刮刮乐代码
2020/09/29 Javascript
Node.js 8 中的 util.promisify的详解
2017/06/12 Javascript
node.js使用redis储存session的方法
2018/09/26 Javascript
原生JS 实现的input输入时表格过滤操作示例
2019/08/03 Javascript
js设计模式之单例模式原理与用法详解
2019/08/15 Javascript
解决layer 关闭当前弹窗 关闭遮罩层 input值获取不到的问题
2019/09/25 Javascript
JavaScript 变量,数据类型基础实例详解【变量、字符串、数组、对象等】
2020/01/04 Javascript
Vue中的this.$options.data()和this.$data用法说明
2020/07/26 Javascript
利用Python实现Windows定时关机功能
2017/03/21 Python
django DRF图片路径问题的解决方法
2018/09/10 Python
使用python搭建服务器并实现Android端与之通信的方法
2019/06/28 Python
python中eval与int的区别浅析
2019/08/11 Python
pytorch下使用LSTM神经网络写诗实例
2020/01/14 Python
tensorflow 重置/清除计算图的实现
2020/01/19 Python
利用CSS3制作简单的3d半透明立方体图片展示
2017/03/25 HTML / CSS
英国的潮牌鞋履服饰商店:size?
2019/03/26 全球购物
欧洲最古老的鞋厂:Peter Kaiser
2019/11/05 全球购物
PHP面试题大全
2015/10/16 面试题
餐饮营销方案
2014/02/23 职场文书
武侯祠导游词
2015/02/04 职场文书
2019教师的学习计划
2019/06/25 职场文书
关于党风廉政建设宣传教育月的活动总结!
2019/08/08 职场文书
励志正能量20句:送给所有为梦想拼搏的人
2019/11/11 职场文书
Redis Stream类型的使用详解
2021/11/11 Redis