python如何生成网页验证码

 更新时间:2018年07月28日 10:22:59   作者:WangF0  
这篇文章主要为大家详细介绍了python如何生成网页验证码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了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吗

    在本篇文章里小编给大家整理的是关于没编程基础可以学python吗的相关知识点,需要的朋友们可以学习下。
    2020-06-06
  • python 批量压缩图片的脚本

    python 批量压缩图片的脚本

    用Python编写的批量压缩图片的脚本,可以自定义压缩质量,有批量图片压缩需求的朋友可以直接拿来用
    2021-06-06
  • 点球小游戏python脚本

    点球小游戏python脚本

    这篇文章主要为大家详细介绍了点球小游戏python脚本,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-05-05
  • python调用短信猫控件实现发短信功能实例

    python调用短信猫控件实现发短信功能实例

    这篇文章主要介绍了python调用短信猫控件实现发短信功能实例,需要的朋友可以参考下
    2014-07-07
  • python 非线性规划方式(scipy.optimize.minimize)

    python 非线性规划方式(scipy.optimize.minimize)

    今天小编就为大家分享一篇python 非线性规划方式(scipy.optimize.minimize),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-02-02
  • Python基础之语法错误和异常详解

    Python基础之语法错误和异常详解

    Python有两种错误很容易辨认:语法错误和异常.本文就给大家详细介绍一下Python错误和异常,对正在学习python的小伙伴们很有帮助哦,需要的朋友可以参考下
    2021-05-05
  • 如何利用Matplotlib库绘制动画及保存GIF图片

    如何利用Matplotlib库绘制动画及保存GIF图片

    这篇文章主要给大家介绍了关于如何利用Matplotlib库绘制动画及保存GIF图片的相关资料,matplotlib模块提供了很高级和非常友好的使用方式,使用起来也是非常方便的,需要的朋友可以参考下
    2021-06-06
  • python嵌套函数使用外部函数变量的方法(Python2和Python3)

    python嵌套函数使用外部函数变量的方法(Python2和Python3)

    这篇文章主要介绍了python嵌套函数使用外部函数变量的方法,需要的朋友可以参考下
    2016-01-01
  • Python import与from import使用和区别解读

    Python import与from import使用和区别解读

    Python程序可以调用一组基本的函数(即内建函数),比如print()、input()和len()等函数。接下来通过本文给大家介绍Python import与from import使用及区别介绍,感兴趣的朋友一起看看吧
    2021-09-09
  • pandas中的series数据类型详解

    pandas中的series数据类型详解

    这篇文章主要介绍了pandas中的series数据类型详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-07-07

最新评论