动态验证码案例

本文介绍了一个使用Python和Django框架生成验证码图片的方法。通过在内存中创建一个图片对象,并使用PIL库绘制随机字符,最终将图片以HTTP响应返回。文章详细展示了如何在Django视图中实现这一功能。
摘要由CSDN通过智能技术生成
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)

 

转载于:https://www.cnblogs.com/ghl666/p/11318078.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值