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 图片验证码代码
Dec 07 Python
python实现图片批量剪切示例
Mar 25 Python
Python中内建函数的简单用法说明
May 05 Python
python运行时间的几种方法
Jun 17 Python
教你用一行Python代码实现并行任务(附代码)
Feb 02 Python
Python 元类实例解析
Apr 04 Python
Python定义二叉树及4种遍历方法实例详解
Jul 05 Python
Python图像处理实现两幅图像合成一幅图像的方法【测试可用】
Jan 04 Python
django框架面向对象ORM模型继承用法实例分析
Jul 29 Python
Pycharm 2020最新永久激活码(附最新激活码和插件)
Sep 17 Python
在python tkinter界面中添加按钮的实例
Mar 04 Python
python在package下继续嵌套一个package
Apr 14 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 函数使用方法与函数定义方法
2010/05/09 PHP
php抓取页面与代码解析 推荐
2010/07/23 PHP
PHP中的Streams详细介绍
2014/11/12 PHP
PHP如何搭建百度Ueditor富文本编辑器
2018/09/21 PHP
PHP之多条件混合筛选功能的实现方法
2019/10/09 PHP
php设计模式之适配器模式实例分析【星际争霸游戏案例】
2020/04/07 PHP
PHP程序员简单的开展服务治理架构操作详解(三)
2020/05/14 PHP
JS 统计时间
2021/03/09 Javascript
JQuery index()方法使用代码
2010/06/02 Javascript
JQuery 返回布尔值Is()条件判断方法代码
2012/05/14 Javascript
js防止表单重复提交实现代码
2012/09/05 Javascript
js字符串截取函数substr substring slice使用对比
2013/11/27 Javascript
jquery选择器之内容过滤选择器详解
2014/01/27 Javascript
js改变鼠标的形状和样式的方法
2014/03/31 Javascript
angularjs客户端实现压缩图片文件并上传实例
2015/07/06 Javascript
超实用的JavaScript代码段 附使用方法
2016/05/22 Javascript
BootStrap轮播HTML代码(推荐)
2016/12/10 Javascript
谈谈JS中常遇到的浏览器兼容问题和解决方法
2016/12/17 Javascript
JavaScript 获取元素在父节点中的下标(推荐)
2017/06/28 Javascript
nodejs中解决异步嵌套循环和循环嵌套异步的问题
2017/07/12 NodeJs
axios 实现post请求时把对象obj数据转为formdata
2019/10/31 Javascript
如何通过JS实现转码与解码
2020/02/21 Javascript
python进阶教程之文本文件的读取和写入
2014/08/29 Python
Django中几种重定向方法
2015/04/28 Python
详解使用pymysql在python中对mysql的增删改查操作(综合)
2017/01/18 Python
python 剪切移动文件的实现代码
2018/08/02 Python
python 实现视频 图像帧提取
2019/12/10 Python
Python基于execjs运行js过程解析
2020/11/27 Python
HTML5添加鼠标悬浮音响效果不使用FLASH
2014/04/23 HTML / CSS
HTML5跳转小程序wx-open-launch-weapp的示例代码
2020/07/16 HTML / CSS
美国益智玩具购物网站:Fat Brain Toys
2017/11/03 全球购物
2014年培训工作总结范文
2014/11/27 职场文书
2015财务年终工作总结范文
2015/05/22 职场文书
详解Vue的options
2021/05/15 Vue.js
python的变量和简单数字类型详解
2021/09/15 Python
MySQL去除密码登录告警的方法
2022/04/20 MySQL