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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • CentOS7各个版本镜像下载地址

    CentOS7各个版本镜像下载地址

    2021年6月4日
    2.9K
  • jvm的垃圾回收算法_jvm默认的垃圾回收器

    jvm的垃圾回收算法_jvm默认的垃圾回收器前言相比C语言,JVM虚拟机一个优势体现在对对象的垃圾回收上,JVM有一套完整的垃圾回收算法,可以对程序运行时产生的垃圾对象进行及时的回收,以便释放JVM相应区域的内存空间,确保程序稳定高效的运行,但在真正了解垃圾回收算法之前,有必要对JVM的对象的引用做一个简单的铺垫JVM对象可达性分析算法Java虚拟机中的垃圾回收器采用可达性分析来探索所有存活的对象扫描堆中的对象,看是否能够沿着GCRoot对象为起点的引用链找到该对象,找不到表示可以被回收想象一下,对象在什么情况下会被认为是垃圾对象呢?

    2025年7月26日
    1
  • Dubbo和Spring结合配置文件内容解析为bean的过程「建议收藏」

    本篇讲解一下Dubbo中Bean的加载过程以及简单介绍Dubbo中服务的暴露和服务的引用!Dubbo是结合Spring来进行使用的,其中bean依赖Spring的IOC容器进行管理。Spring默认的Bean加载机制肯定是不能去加载Dubbo提供的Bean,那么Dubbo中的Bean是如何加载到Spring 容器的呢?

    2022年2月26日
    55
  • 最近公共祖先_洛谷好不好

    最近公共祖先_洛谷好不好原题链接题目描述如题,给定一棵有根多叉树,请求出指定两个点直接最近的公共祖先。输入格式第一行包含三个正整数 N,M,SN,M,S,分别表示树的结点个数、询问的个数和树根结点的序号。接下来 N-1N−1 行每行包含两个正整数 x, yx,y,表示 xx 结点和 yy 结点之间有一条直接连接的边(数据保证可以构成树)。接下来 MM 行每行包含两个正整数 a, ba,b,表示询问 aa 结点和 bb 结点的最近公共祖先。输出格式输出包含 MM 行,每行包含一个正整数,依次为每一个询问的结果。输入

    2022年8月8日
    5
  • 暴力激活成功教程密码 – C++ 递归方法实现

    暴力激活成功教程密码 – C++ 递归方法实现问题描述:   暴力激活成功教程密码   假设有一个4位字母密码,每位密码是a~e之间的小写字母   你能否编写一段代码,来暴力激活成功教程该密码?(可重复排序) #include<iostream>#include<string>usingstd::string;usingnamespacestd;voidBreakPassword(s…

    2022年8月22日
    4
  • 先学java再学python_java和python应该先学好哪个呢

    先学java再学python_java和python应该先学好哪个呢java和python应该先学好哪个呢发布时间:2020-07-3011:21:41来源:亿速云阅读:82作者:清晨不懂java和python应该先学好哪个呢?其实想解决这个问题也不难,下面让小编带着大家一起学习怎么去解决,希望大家阅读完这篇文章后大所收获。作为一名Java程序员,肯定会建议你先学Java,然后再学Python,但如果你问一个Python程序员,可能会得到一个完全相反…

    2022年7月8日
    18

发表回复

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

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