全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

python3 pillow生成简单验证码图片的示例

使用Python的pillow模块 random 模块随机生成验证码图片,并应用到Django项目中

安装pillow

$ pip3 install pillow

生成验证码图片

\vericode.py

from PIL import Image,ImageDraw,ImageFont,ImageFilter
import random

 #随机码 默认长度=1
def random_code(lenght=1):  
  code = ''
  for char in range(lenght):
    code += chr(random.randint(65,90))
  return code

 #随机颜色 默认颜色范围【1,255】
def random_color(s=1,e=255):
  return (random.randint(s,e),random.randint(s,e),random.randint(s,e))

 #生成验证码图片
 #length 验证码长度
 #width 图片宽度
 #height 图片高度
 #返回验证码和图片
def veri_code(lenght=4,width=160,height=40):
  #创建Image对象
  image = Image.new('RGB',(width,height),(255,255,255))
  #创建Font对象
  font = ImageFont.truetype('Arial.ttf',32)
  #创建Draw对象
  draw = ImageDraw.Draw(image)
  #随机颜色填充每个像素
  for x in range(width):
    for y in range(height):
      draw.point((x,y),fill=random_color(64,255))
  #验证码
  code = random_code(lenght)
  #随机颜色验证码写到图片上
  for t in range(lenght):
    draw.text((40*t+5,5),code[t],font=font,fill=random_color(32,127))
  #模糊滤镜
  image = image.filter(ImageFilter.BLUR)
  return code,image

应用

编写Django应用下的视图函数

\views.py

from . import vericode.py
from io import BytesIO
from django.http import HttpResponse

def verify_code(request):
  f = BytesIO()
  code,image = vericode.veri_code()
  image.save(f,'jpeg')
  request.session['vericode'] = code
  return HttpResponse(f.getvalue())

def submit_xxx(request):
  if request.method == "POST":
    vericode = request.session.get("vericode").upper()
    submitcode = request.POST.get("vericode").upper()
    if submitcode == vericode:
      return HttpResponse('ok')
  return HttpResponse('error')

这里使用了Django的session,需要在Django settings.py的INSTALLED_APPS中添加'django.contrib.sessions'(默认添加)
verify_code视图函数将验证码添加到session中和验证码图片一起发送给浏览器,当提交表单到submit_xxx()时,先从session中获取验证码,再对比从表单中的输入的验证码。

这里只是简单说明,url配置和前端代码未给出。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# python  # pillow验证码  # 验证码  # python生成验证码图片  # python3读取图片并灰度化图片的四种方法(OpenCV、PIL.Image、TensorFlow  # Python3安装Pillow与PIL的方法  # 解决Python3用PIL的ImageFont输出中文乱码的问题  # 详解python3安装pillow后报错没有pillow模块以及没有PIL模块问题解决  # python3用PIL把图片转换为RGB图片的实例  # win10下python3.8的PIL库安装过程  # Python3用tkinter和PIL实现看图工具  # 解决python3 安装不了PIL的问题  # python3使用PIL添加中文文本水印背景方法详解  # 表单  # 滤镜  # 写到  # 大家多多  # 再对  # 并应  # 发送给  # 使用了  # lenght  # randint  # chr  # char  # code  # range  # veri_code  # height  # width  # return  # length 


相关文章: ,如何利用word制作宣传手册?  昆明网站制作哪家好,昆明公租房申请网上登录入口?  利用JavaScript实现拖拽改变元素大小  如何选择PHP开源工具快速搭建网站?  如何制作新型网站程序文件,新型止水鱼鳞网要拆除吗?  XML的“混合内容”是什么 怎么用DTD或XSD定义  如何通过.red域名打造高辨识度品牌网站?  怎么制作一个起泡网,水泡粪全漏粪育肥舍冬季氨气超过25ppm,可以有哪些措施降低舍内氨气水平?  建站之星伪静态规则如何设置?  如何选择高效可靠的多用户建站源码资源?  制作网站公司那家好,网络公司是做什么的?  道歉网站制作流程,世纪佳缘致歉小吴事件,相亲网站身份信息伪造该如何稽查?  Android使用GridView实现日历的简单功能  如何快速完成中国万网建站详细流程?  西安市网站制作公司,哪个相亲网站比较好?西安比较好的相亲网站?  定制建站方案优化指南:企业官网开发与建站费用解析  香港服务器如何优化才能显著提升网站加载速度?  如何正确选择百度移动适配建站域名?  ppt制作免费网站有哪些,ppt模板免费下载网站?  ,网站推广常用方法?  成都网站制作报价公司,成都工业用气开户费用?  建站之星如何优化SEO以实现高效排名?  哈尔滨网站建设策划,哈尔滨电工证查询网站?  平台云上自助建站如何快速打造专业网站?  南京网站制作费用,南京远驱官方网站?  常州自助建站:操作简便模板丰富,企业个人快速搭建网站  如何续费美橙建站之星域名及服务?  建站之星如何快速解决建站难题?  建站之星安全性能如何?防护体系能否抵御黑客入侵?  如何用已有域名快速搭建网站?  如何配置WinSCP新建站点的密钥验证步骤?  油猴 教程,油猴搜脚本为什么会网页无法显示?  建站之星手机一键生成:多端自适应+小程序开发快速建站指南  建站之星CMS五站合一模板配置与SEO优化指南  存储型VPS适合搭建中小型网站吗?  宝塔Windows建站如何避免显示默认IIS页面?  邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?  营销式网站制作方案,销售哪个网站招聘效果最好?  宿州网站制作公司兴策,安徽省低保查询网站?  如何正确下载安装西数主机建站助手?  全景视频制作网站有哪些,全景图怎么做成网页?  佛山网站制作系统,佛山企业变更地址网上办理步骤?  如何制作网站标识牌,动态网站如何制作(教程)?  如何有效防御Web建站篡改攻击?  山东网站制作公司有哪些,山东大源集团官网?  如何选择美橙互联多站合一建站方案?  广州网站制作的公司,现在专门做网站的公司有没有哪几家是比较好的,性价比高,模板也多的?  网站制作专业公司有哪些,如何制作一个企业网站,建设网站的基本步骤有哪些?  C#如何使用XPathNavigator高效查询XML  如何在腾讯云免费申请建站? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。