python实现图片验证码

#定义验证码类
class MyCode(View):
    #定义随机取色方法
    def get_random_color(self):
        R = random.randrange(255)
        G = random.randrange(255)
        B = random.randrange(255)
        return (R,G,B)
    def get(self,request):
        #定义画布
        img_size = (120,50)
        #定义图像
        image = Image.new('RGB',img_size,'white')
        #定义画笔
        draw = ImageDraw.Draw(image,'RGB')
        #随机字符串的组成
        source = '0123456789qwertyuiopasdfghjklzxcvbnm'
        #定义容器
        code_str = ''
        for i in range(4):
            #取色
            text_color = self.get_random_color()
            #获取一个字符串
            tmp_num = random.randrange(len(source))
            #获取字符集
            random_str = source[tmp_num]
            #将随机生成的字符串放入定义好的容器
            code_str += random_str
            #将文字输入绘图
            draw.text((15+30*i,25),random_str,text_color)
        #建立iO文件流
        buf = io.BytesIO()
        #保存内存中
        image.save(buf,'png')

        #将验证码存入redis
        r.set('code',code_str)
        code = r.get('code')
        mycode = code.decode('utf-8')
        print(mycode,'这个是redis')
        # 返回文件流图像
        return HttpResponse(buf.getvalue(),'image/png')

 

posted @ 2020-08-15 14:37  安东辉辉辉辉  阅读(290)  评论(0)    收藏  举报