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


Posted in Python onSeptember 19, 2017

使用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 相关文章推荐
Python命令行参数解析模块getopt使用实例
Apr 13 Python
解决python3在anaconda下安装caffe失败的问题
Jun 15 Python
开源软件包和环境管理系统Anaconda的安装使用
Sep 04 Python
Python网络爬虫中的同步与异步示例详解
Feb 03 Python
关于django 数据库迁移(migrate)应该知道的一些事
May 27 Python
Python对数据进行插值和下采样的方法
Jul 03 Python
Python unittest单元测试框架总结
Sep 08 Python
Python3.5内置模块之shelve模块、xml模块、configparser模块、hashlib、hmac模块用法分析
Apr 27 Python
10款最好的Python开发编辑器
Jul 03 Python
python3.6+django2.0+mysql搭建网站过程详解
Jul 24 Python
python 消费 kafka 数据教程
Dec 21 Python
python 异步async库的使用说明
May 04 Python
Python文件操作之合并文本文件内容示例代码
Sep 19 #Python
使用Python & Flask 实现RESTful Web API的实例
Sep 19 #Python
python基本语法练习实例
Sep 19 #Python
基于python3 类的属性、方法、封装、继承实例讲解
Sep 19 #Python
浅谈python中列表、字符串、字典的常用操作
Sep 19 #Python
Python 文件操作的详解及实例
Sep 18 #Python
python Socket之客户端和服务端握手详解
Sep 18 #Python
You might like
一个从别的网站抓取信息的例子(域名查询)
2006/10/09 PHP
入门基础学习 ExtJS笔记(一)
2010/11/11 Javascript
jquery链式操作的正确使用方法
2014/01/06 Javascript
jquery $("#variable") 循环改变variable的值示例
2014/02/23 Javascript
弹出窗口并且此窗口带有半透明的遮罩层效果
2014/03/13 Javascript
JS中判断null、undefined与NaN的方法
2014/03/24 Javascript
jQuery表单验证功能实例
2015/08/28 Javascript
使用jQuery实现Web页面换肤功能的要点解析
2016/05/12 Javascript
JavaScript判断用户名和密码不能为空的实现代码
2016/05/16 Javascript
Jquery实现遮罩层的简单实例(就是弹出DIV周围都灰色不能操作)
2016/07/14 Javascript
JavaScript提高网站性能优化的建议(二)
2016/07/24 Javascript
js实现表单及时验证功能 用户信息立即验证
2016/09/13 Javascript
Bootstrap如何创建表单
2016/10/21 Javascript
js实现上传文件添加和删除文件选择框
2016/10/24 Javascript
JS实现的表头列头固定页面功能示例
2017/01/10 Javascript
JS图片轮播与索引变色功能实例详解
2017/07/06 Javascript
vue 实现通过手机发送短信验证码注册功能
2018/04/19 Javascript
使用elementUI实现将图片上传到本地的示例
2018/09/04 Javascript
JavaScript中this的全面解析及常见实例
2019/05/14 Javascript
JS数组属性去重并校验重复数据
2020/01/10 Javascript
[05:16]《大圣!大圣》——DOTA2新英雄齐天大圣配音李世宏老师专访
2016/12/13 DOTA
Centos5.x下升级python到python2.7版本教程
2015/02/14 Python
python3音乐播放器简单实现代码
2020/04/20 Python
答题辅助python代码实现
2018/01/16 Python
python爬虫爬取某站上海租房图片
2018/02/04 Python
Python基于win32ui模块创建弹出式菜单示例
2018/05/09 Python
Python日志模块logging基本用法分析
2018/08/23 Python
Python爬虫之urllib基础用法教程
2019/10/12 Python
关于Python 常用获取元素 Driver 总结
2019/11/24 Python
CSS3中新增的对文本和字体的设置
2020/02/03 HTML / CSS
简述进程的启动、终止的方式以及如何进行进程的查看
2014/02/20 面试题
北大青鸟学生求职信
2013/09/24 职场文书
求职简历推荐信范文
2013/12/02 职场文书
社区居务公开实施方案
2014/03/27 职场文书
党的作风建设心得体会
2014/10/22 职场文书
员工保密协议范本,您一定得收藏!很有用!
2019/08/08 职场文书