动态验证码案例

from django.shortcuts import render,HttpResponse,redirect
from django.urls import reverse
from app01 import models
from PIL import Image,ImageDraw,ImageFont
from io import BytesIO
import random

def checked_code(request):
    f=BytesIO()  #在内存中开辟一块空间
    img=Image.new(mode='RGB',size=(120,30),color=(255,255,255)) #新建一个图片对象

    draw=ImageDraw.Draw(img,mode='RGB')  #创建一个画笔对象
    char_list=[]     #创建一个列表存放随机字符
    for i in range(5):
        char=chr(random.randint(65,90))  #产生A——Z随机字符
        char_list.append(char)             #存储到列表中
        font=ImageFont.truetype('kumo.ttf',20)  #创建一个字体对象
        draw.text([i*24,0],char,(random.randint(0,255),random.randint(0,255),random.randint(0,255),),font=font) #将创建的字符对象带着属性渲染到界面上

    img.save(f,'png')  #将这个图片存储到这个内存中
    data=f.getvalue()   #获取这个存储的图片以bytes的类型

    code=''.join(char_list)
    request.session['code']=code

    return HttpResponse(data)

 

posted @ 2019-08-07 21:49  百鬼之主  阅读(200)  评论(0编辑  收藏  举报