zoukankan      html  css  js  c++  java
  • Django 生成六位随机图片验证码

    from PIL import Image, ImageDraw, ImageFont
    from io import BytesIO
    import random
    
    
    def get_valid_img(request):
        #  生成随机颜色
        def get_random_color():
            return (random.randint(0, 255), random.randint(0, 255), random.randint(0, 255))
    
        # 生成随机背景色的图片   --  改版: 背景色为幽灵白
        img = Image.new('RGB', (360, 38), (248, 248, 255))
        draw = ImageDraw.Draw(img)
        font = ImageFont.truetype('static/font/f1.TTF', 32)
    
        code = ""  # 验证码明文
        # 生成随机验证码
        for i in range(6):
            random_num = str(random.randint(0, 9))  # 生成随机数字
            random_up = chr(random.randint(65, 90))  # 生成随机大写字母
            random_low = chr(random.randint(97, 122))  # 生成随机小写字母
    
            # 随机选择数字,大写字母,小写字母中的一个
            random_char = random.choice([random_low, random_up, random_num])
    
            # 在生成的随机背景色图片上绘制随机颜色的随机验证码
            draw.text((i * 51 + 50, 0), random_char, get_random_color(), font=font)
    
            # 保存生成的随机验证码
            code += random_char
        print("验证码是: ", code)
    
        width = 350
        height = 38
        # 添加噪线
        for i in range(2):
            x1 = random.randint(0, width)
            x2 = random.randint(0, width)
            y1 = random.randint(0, height)
            y2 = random.randint(0, height)
            draw.line((x1, y1, x2, y2), fill=get_random_color())
        # 添加噪点
        for i in range(30):
            draw.point([random.randint(0, width), random.randint(0, height)], fill=get_random_color())
            x = random.randint(0, width)
            y = random.randint(0, height)
            draw.arc((x, y, x + 4, y + 4), 0, 90, fill=get_random_color())
    
        # 将生成的验证码图片保存在内存中
        f = BytesIO()  # 句柄
        img.save(f, 'png')  # 保存
        data = f.getvalue()  # 验证码图片数据
    
        # 将验证码保存在各自的session中,方便不同浏览器之间进行验证
        request.session['code'] = code
    
        return HttpResponse(data)
  • 相关阅读:
    log4net logfornet 配置和用法
    seaJs学习笔记
    docker 创建tomcat镜像
    配置alibaba的yum 源
    maven 中 jar管理
    docker 创建elasticsearch集群镜像
    springboot 常用插件
    elasticsearch插件安装之--linux下安装及head插件
    docker 创建jdk镜像
    docker 创建基础镜像
  • 原文地址:https://www.cnblogs.com/knowledgeYang/p/10307158.html
Copyright © 2011-2022 走看看