verifycode验证码模版「建议收藏」

verifycode验证码模版「建议收藏」#-*-coding:utf-8-*-fromdjango.shortcutsimportHttpResponsedefverifycode(request):#引入绘图模块fromPILimportImage,ImageDraw,ImageFont#引入随机函数模块importrandom#定义变量,…

大家好,又见面了,我是你们的朋友全栈君。

# -*- coding:utf-8 -*-
from django.shortcuts import HttpResponse
def verifycode(request):
    # 引入绘图模块
    from PIL import Image,ImageDraw,ImageFont
    #引入随机函数模块
    import random
    #定义变量,用于画面的背景色,宽,高
    bgcolor = (random.randrange(20,100),random.randrange(20,100),random.randrange(20,100))
    width = 100
    height = 50
    #创建画面对象
    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)
    #定义验证码的备用值
    str = '1234567890QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm'
    #随机选取4个值作为验证码
    rand_str = ''
    for i in range(0,4):
        rand_str += str[random.randrange(0,len(str))]
    #构造字体对象 把C盘的字体文件放到其它盘,因为C盘字体文件路径不好找
    font = ImageFont.truetype("E:\simsunb.ttf", 36)
    fontcolor1 = (255, random.randrange(0,255), random.randrange(0,255))
    fontcolor2 = (255, random.randrange(0,255), random.randrange(0,255))
    fontcolor3 = (255, random.randrange(0,255), random.randrange(0,255))
    fontcolor4 = (255, random.randrange(0,255), random.randrange(0,255))
    #绘制4个字
    draw.text((5,2), rand_str[0], font=font, fill=fontcolor1)
    draw.text((25,2), rand_str[1], font=font, fill=fontcolor2)
    draw.text((50,2), rand_str[2], font=font, fill=fontcolor3)
    draw.text((75,2), rand_str[3], font=font, fill=fontcolor4)
    #释放画笔
    del draw
    # request.session['verifycode'] = rand_str
    #内存文件操作
    import io
    buf = io.BytesIO()
    #将图片保存在内存中,文件类型为png
    im.save(buf,'png')
    #将内存中的图片数据返回给客户端,MIME类型为图片png
    return HttpResponse(buf.getvalue(),'image/png')


#备注:
# code1 = request.session['verify'] 【登录获取图片上的验证码】
#code2 = request.POST.get('verifycode') 【获取登录表单上输入的验证码】

 

转载于:https://www.cnblogs.com/weilaibuxiangshuo/p/10401044.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/159578.html原文链接:https://javaforall.net

(0)
上一篇 2022年7月15日 下午4:36
下一篇 2022年7月15日 下午4:46


相关推荐

  • source insight3.5 注册码:SI3US-361500-17409[通俗易懂]

    source insight3.5 注册码:SI3US-361500-17409[通俗易懂]直接安装,启动后输入注册码即可。

    2022年10月3日
    5
  • 淘宝为什么搜不到GPT了

    淘宝为什么搜不到GPT了

    2026年3月16日
    2
  • USB协议简介「建议收藏」

    USB协议简介「建议收藏」1.USB协议简介https://blog.csdn.net/songze_lee/article/details/776580942017年08月28日23:20:16songze_lee阅读数:22978版权声明:本文为博主原创文章,未经博主允许不得转载。https://blog.csdn.net/songze_lee/article/details/77658094…

    2022年6月25日
    29
  • tcpdump抓包命令怎么用_linux系统抓包工具

    tcpdump抓包命令怎么用_linux系统抓包工具今天要给大家介绍的一个Unix下的一个网络数据采集分析工具,也就是我们常说的抓包工具。与它功能类似的工具有wireshark,不同的是,wireshark有图形化界面,而tcpdump则只有命令行。由于我本人更习惯使用命令行的方式进行抓包,因此今天先跳过wireshark,直接给大家介绍这个tcpdump神器。这篇文章,我肝了好几天,借助于Linux的man帮助命令,我把tcpdump的用法全部研究了个遍,才形成了本文,不夸张的说,应该可以算是中文里把tcpdump.

    2022年10月14日
    5
  • java字符串分割方法.split()的详细用法「建议收藏」

    java字符串分割方法.split()的详细用法「建议收藏」先看看它在java包中的JavaAPI是:java.lang.String方法总结 (1)按指定普通字符分割: java代码如下: Stringstring=”123@456@789″; Stringarray[]=string.split(“@”);//以@分割 for(Strings:array) System.out.println(s); 运行结果: 123 456 789 (2).

    2022年6月22日
    35
  • route命令详解

    route命令详解route命令详解在网络中,route命令用来显示、添加、删除和修改网络的路由。1.route命令的格式route[-f][-p][Command][Destination][maskNetmask][Gateway][metricMetric][ifInterface]2.route-参数的含义:route-f:用于清除路由表。route-p:用于创建永久路由。routeComman:主要有print(打印路由)、ADD(添加路由)、DELETE(删

    2022年7月18日
    28

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号