zoukankan      html  css  js  c++  java
  • Django 定制验证码

    一、图片验证码

    方式一:

    def get_validCode_img(request):
        path=os.path.join(settings.BASE_DIR,'static','image','1.jpg')
        with open(path,'rb') as f:
            img=f.read()
            return HttpResponse(img)
    

    二、自定义图片验证码磁盘管理

    方式二:

    def get_validCode_img(request):
        from PIL import Image
        img=Image.new(mode='RGB',size=(120,30),color='green')
        f=open('validCode.png','wb')
        img.save(f,'png')
        with open('validCode.png', 'rb') as f:
            data=f.read()
            return HttpResponse(data)
    

    三、自定义图片验证码内存管理

    方式三:

    def get_validCode_img(request):
        from io import BytesIO    # 内存管理
        from PIL import Image
        img = Image.new(mode='RGB', size=(120, 30), color='blue')
        f = BytesIO()    # 文件句柄
        img.save(f, 'png')
    
        data=f.getvalue()
    
        return HttpResponse(data)
    

    四、自定义图片验证码画图

    方式四:

    def get_validCode_img(request):
        from io import BytesIO  # 内存管理
        from PIL import Image,ImageDraw,ImageFont
        from random import randint,choice
        color=(randint(0,255),randint(0,255),randint(0,255))
        img = Image.new(mode='RGB', size=(120, 30), color=color)
    
        draw=ImageDraw.Draw(img,"RGB")
        font=ImageFont.truetype("static/fonts/kumo.ttf",20)
    
        valid_list=[]
        for i in range(5):
            random_num=str(randint(0,9))
            random_lower=chr(randint(65,90))   # 小写字母
            random_upper=chr(randint(97,122))  # 大写字母
    
            random_chr=choice([random_num,random_lower,random_upper])
            draw.text([10+i*22,2],random_chr,color=color,font=font)
            valid_list.append(random_chr)
    
        f = BytesIO()  # 文件句柄
        img.save(f, 'png')
        data = f.getvalue()
        valid_str="".join(valid_list)
        print(valid_str)
        request.session["keepValidCode"]=valid_str
        return HttpResponse(data)  

    字体地址:

    https://files.cnblogs.com/files/supery007/blogCMS.rar  

      

      

  • 相关阅读:
    C# 之 获取文件名及拓展名
    C# 之 日常积累(二)
    C# 之 OpenFileDialog的使用
    Linux系统中,main函数的执行过程
    linux线程的实现
    linux内核--进程与线程
    内核线程和进程的区别
    软中断和硬中断
    Linux 2.4.x内核软中断机制
    几种USB控制器类型:OHCI,UHCI,EHCI,xHCI
  • 原文地址:https://www.cnblogs.com/supery007/p/7866561.html
Copyright © 2011-2022 走看看