博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
django 验证码图片生成视图函数
阅读量:4964 次
发布时间:2019-06-12

本文共 1494 字,大约阅读时间需要 4 分钟。

def verify_code(request):    import random    # 定义验证码图片背景颜色 宽和高    bgcolor = (random.randrange(20,180),random.randrange(20,180),255)    width = 100    height = 25    # 创建画面对象    im = Image.new('RGB',(width,height),bgcolor)    # 创建画笔对象    draw = ImageDraw.Draw(im)    # 调用画笔的point()函数绘制噪点    for i in range(0,100):        xy = (random.randrange(0,width),random.randrange(0,height))        fill = (random.randrange(0,255),255,random.randrange(0,255))        draw.point(xy,fill=fill)    # 定义验证码的备选值    str1 = 'AQZSWRFEVCBGTHYNUMJKILOP123456789zxcbansdfqwyehrjtpk'    # 随机选取4个值为验证码  或者6个值,不过图片宽和高,书写文字的间隔需要另外修改设置    rand_str = ''    for i in range(0,4):        rand_str += str1[random.randrange(0,len(str1))]    # 构造字体对象    font = ImageFont.truetype('static/font/verdana.ttf',23)    # 字体颜色    def color():        fontcolor = (255,random.randrange(0,255),random.randrange(0,255))        return fontcolor    # 绘制4个字    draw.text((5 , 0), rand_str[0], font=font, fill=color())    draw.text((25, 0), rand_str[1], font=font, fill=color())    draw.text((50, 0), rand_str[2], font=font, fill=color())    draw.text((75, 0), rand_str[3], font=font, fill=color())    # 释放画笔    del draw    # 存入session中 用于对比    request.session['verifycode'] = rand_str    # 内存文件操作    buf = BytesIO()    # 将图片保存在内存中,文件类型为png    im.save(buf,'png')    # 将存放的图片返回给客户端 返回类型注意需要为图片    # print(buf)    # print(buf.getvalue())    return HttpResponse(buf.getvalue(),'image/png')

最终结果为 

 

转载于:https://www.cnblogs.com/zengxm/p/11273124.html

你可能感兴趣的文章
oracle 使用job定时自动重置sequence
查看>>
在项目中加入其他样式
查看>>
OMAPL138学习----DSPLINK DEMO解析之SCALE
查看>>
restframework CBV试图的4种方式
查看>>
大图居中,以1920px为例
查看>>
[C陷阱和缺陷] 第7章 可移植性缺陷
查看>>
linux中configure文件默认执行结果所在位置
查看>>
Windows向Linux上传文件夹
查看>>
20180104-高级特性-Slice
查看>>
6个SQL Server 2005性能优化工具介绍
查看>>
nginx启动、关闭命令、重启nginx报错open() "/var/run/nginx/nginx.pid" failed
查看>>
BZOJ 3097 Hash Killer I
查看>>
UINavigationController的视图层理关系
查看>>
html阴影效果怎么做,css 内阴影怎么做
查看>>
宏观经济
查看>>
综合练习:词频统计
查看>>
BZOJ1026: [SCOI2009]windy数
查看>>
样板操作数
查看>>
64位UBUNTU下安装adobe reader后无法启动
查看>>
组件:slot插槽
查看>>