python3 pillow生成简单验证码图片的示例
发布时间:2020-05-28 16:54:23 所属栏目:Python 来源:互联网
导读:使用Python的pillow模块random模块随机生成验证码图片,并应用到Django项目中安装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))
#生成验证码图片
#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'(默认添加) 这里只是简单说明,url配置和前端代码未给出。 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程小技巧。 (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
