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人人网登录应用实例
Sep 26 Python
Python Web框架Flask中使用七牛云存储实例
Feb 08 Python
python中xrange用法分析
Apr 15 Python
python中map()与zip()操作方法
Feb 27 Python
Python实现手写一个类似django的web框架示例
Jul 20 Python
Django 日志配置按日期滚动的方法
Jan 31 Python
Python2与Python3的区别实例分析
Apr 11 Python
安装好Pycharm后如何配置Python解释器简易教程
Jun 28 Python
用Python爬取QQ音乐评论并制成词云图的实例
Aug 24 Python
用python写测试数据文件过程解析
Sep 25 Python
pymysql模块的操作实例
Dec 17 Python
基于Django集成CAS实现流程详解
Nov 28 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实现下载限制速度示例分享
2014/02/13 PHP
PHP中使用Imagick读取pdf并生成png缩略图实例
2015/01/21 PHP
注意!PHP 7中不要做的10件事
2016/09/18 PHP
yii2高级应用之自定义组件实现全局使用图片上传功能的方法
2016/10/08 PHP
yii2 在控制器中验证请求参数的使用方法
2019/06/19 PHP
Yii框架分页技术实例分析
2019/08/30 PHP
js 表单验证方法(实用)
2009/04/28 Javascript
Javascript remove 自定义数组删除方法
2009/10/20 Javascript
javascript面向对象之二 命名空间
2011/02/08 Javascript
JavaScript中使用Callback控制流程介绍
2015/03/16 Javascript
vue+iview+less 实现换肤功能
2018/08/17 Javascript
layui table动态表头 改变表格头部 重新加载表格的方法
2019/09/21 Javascript
js防抖函数和节流函数使用场景和实现区别示例分析
2020/04/11 Javascript
Python内存读写操作示例
2018/07/18 Python
python 堆和优先队列的使用详解
2019/03/05 Python
python 实现将文件或文件夹用相对路径打包为 tar.gz 文件的方法
2019/06/10 Python
使用python list 查找所有匹配元素的位置实例
2019/06/11 Python
如何利用Python模拟GitHub登录详解
2019/07/15 Python
Django 开发调试工具 Django-debug-toolbar使用详解
2019/07/23 Python
Python学习笔记之函数的参数和返回值的使用
2019/11/20 Python
python传到前端的数据,双引号被转义的问题
2020/04/03 Python
python实现数字炸弹游戏程序
2020/07/17 Python
台湾最大银发乐活百货:乐龄网
2018/05/21 全球购物
美国性感内衣店:Yandy
2018/06/12 全球购物
G-Form护具官方网站:美国运动保护装备
2019/09/04 全球购物
将n个数按输入顺序的逆序排列,用函数实现
2012/11/14 面试题
C#如何进行LDAP用户校验
2012/11/21 面试题
MYSQL支持事务吗
2013/08/09 面试题
个人委托书格式
2014/04/04 职场文书
婚礼庆典答谢词
2015/01/20 职场文书
大学生旷课检讨书1000字
2015/02/19 职场文书
工会积极分子个人总结
2015/03/03 职场文书
副总经理岗位职责范本
2015/04/08 职场文书
总经理年会致辞
2015/07/29 职场文书
高考升学宴主持词
2019/06/21 职场文书
Python OpenCV实现传统图片格式与base64转换
2021/06/13 Python