首页 > 其他分享 >生成随机验证码

生成随机验证码

时间:2023-11-12 21:26:16浏览次数:30  
标签:code obj img random 验证码 生成 随机

首先要导入生成图片相关模块:

from PIL import Image, ImageDraw, ImageFont

"""
Image:生成图片
ImageDraw:能够在图片上乱涂乱画
ImageFont:控制字体样式
"""

 

为图片生成随机三基色

def get_random():
    return random.randint(0, 255), random.randint(0, 255), random.randint(0, 255)

 

定义生成随机验证码函数:

def get_code(request):
    # 最终步骤:写图片验证码
    img_obj = Image.new('RGB', (430, 35), get_random()) # 模式 字体大小 颜色
    img_draw = ImageDraw.Draw(img_obj)  # 产生一个画笔对象
    img_font = ImageFont.truetype('static/font/111.ttf', 30)  # 字体样式 大小

    # 随机验证码 五位数 数字 小写字母 大写字母
    code = ''
    for i in range(5):
        random_upper = chr(random.randint(65, 90))
        random_lower = chr(random.randint(97, 122))
        random_int = str(random.randint(0, 9))
        # 从上面三个随机选择一个
        tmp = random.choice([random_upper, random_lower, random_int])
        # 将产生的随机字符串写入到图片上
        """
        为什么一个个写而不是生成好了之后再写
        因为一个个写能够控制每个字体的间隙 而生成好之后再写的话
        间隙就没法控制了
        """
        img_draw.text((i * 60 + 60, -2), tmp, get_random(), img_font)
        # 拼接随机字符串
        code += tmp
    print(code)

 

 

再导入前端存储图片(内存管理器)模块:

from io import BytesIO, StringIO

"""
内存管理器模块
BytesIO:临时帮你存储数据 返回的时候数据是二进制
StringIO:临时帮你存储数据 返回的时候数据是字符串
"""

 

在生成随机验证码函数内往后书写:

# 随机验证码在登录的视图函数里面要用到 比对 所以需要存起来并且其他视图函数也能拿到
    request.session['code'] = code
    io_obj = BytesIO()
    img_obj.save(io_obj, 'png')
    return HttpResponse(io_obj.getvalue())

 

标签:code,obj,img,random,验证码,生成,随机
From: https://www.cnblogs.com/wellplayed/p/17827816.html

相关文章

  • 30.随机数
    随机数在程序开发过程中,经常会使用到随机数,Python中,可以使用 random 模块中的 randint() 函数获取随机数。格式: randint(start,stop)start 为随机数获取初始范围stop 为随机数获取结束范围,包含该值。使用该函数前需要导入, fromrandomimportrandintfromrand......
  • python随机抽取数字的方法和代码
    在Python中,我们可以使用内置的random模块来随机抽取数字。下面是一些示例。从一个列表中随机抽取数字如果你有一个数字列表,并且你想从中随机选择一个数字,你可以使用random.choice函数。pythonimportrandomnumbers=[1,2,3,4,5,6,7,8,9,10]chosen_number=rando......
  • 开源多模态模型—MiniGPT-5,多模态生成的突破
    在人工智能领域,多模态生成已成为科技巨头争相突破的前沿。而MiniGPT-5模型,由加州大学圣克鲁斯分校研发,提出了全新的“GenerativeVokens”概念,创新性地构建了文本与图像特征空间的桥梁,推动了普通训练数据的有效对齐,同时生成高质量的文本和图像。MiniGPT-5的核心技术:GenerativeVoke......
  • 医院诊断证明一键生成器,画板+透明标签+取快照即可实现
    画板+透明标签+取快照就能实现一个自动生成诊断截图的工具,图片还是从网上随便找的,这个你可以自己随便换,但是我这里因为写教程所以加了水印,当然仅仅只是为了把自己的开发经验和思路以及代码逻辑分享一下而已,就是通过快照取画板截图,输出通过写到文件()命令即可实现,图片字节集信息通过......
  • 在线制作仿真病历证明软件,易语言实现病例报告生成器,取画板快照+标签+编辑框
    闲着无聊用易语言开发了一个病例生成器,当然我加了水印的,这个图片你就算截图你也用不了,模板是从百度图库搜的,很多,我就随便找了一个,然后实现逻辑就是加了一个画板,然后载入了素材图,素材信息元素上面加入透明标签,默认不支持透明,但可以用黑月支持库就可以实现标签的透明化,然后具体的实......
  • Linux设备树dtb文件生成问题(make dtbs)
    在makedtbs的时候遇到了无信息提示的问题,正确结果应该是如图所示且移植dtb文件时需要到dts文件夹下进行cp覆盖 ......
  • redis生成连续的
    使用Redis生成连续数字1.简介在开发中,有时需要生成连续的数字,比如生成订单号、生成用户ID等。使用Redis的INCR命令可以很方便地实现生成连续数字的功能。本文将向你详细介绍如何使用Redis生成连续数字。2.实现步骤下面是使用Redis生成连续数字的步骤:步骤操作1.连......
  • 快速生成项目依赖包requirement.txt
    方式一#这个方法会导出所有的包不管项目用没用上pipinstallrequests#在虚拟环境中安装完所有项目依赖库后使用freeze命令将项目所依赖的所有第三方库导出到一个文件中可使用以下命令将依赖库导出到一个名为requirements.txt的文件中pipfreeze>requirements.txt#......
  • pytest使用allure生成测试报告
    安装:pipinstallallure-pytest使用:修改pytest的ini文件:指定allure报告文件和生成的测试文件目录:在命令行中:alluregeneratereport/result--clean-oreport/html--clean是覆盖,如果这个目录已存在,就会覆盖,-o是指定生成的目录位置在使用时,导入allure,然后给测试用例加上......
  • E 最小生成树 (骗子!!)
    E最小生成树Description:给出一个\(n\)个点的图,点编号从\(1\)到\(n\),\(i\)号点的点权为\(a_i\)。对于\(\foralli,j\)\((1\lei\ltj\len)\)\(i\)号点和\(j\)号点之间存在一条无向边,边权为\(a_i+a_j\)。请求出这个无向图的最小生成树的边权和。请回忆:......