欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

生成验证码

程序员文章站 2022-05-13 15:08:39
...

工具

Image ,Imagedraw, Imagefont

流程

一:创建验证码背景
二:创建	验证码图片
三:创建画笔
四:生成干扰点
五:生成随机字符 --定义默认字体--
六:将随机字符画到图片上
七:将生成的对象保存到内存
八:响应对象

代码

def create_code():
   wigth=100
   height=40
   img=Image.new('RGB',(wigth,height),color=get_color())
   pen=ImageDraw.Draw(img,'RGB')
   for x in range(wigth):
    	xy=(random.randrange(100),random.randrange(40))
    	color=get_color()
    	pen.point(xy=xy,fill=color)
    str='qwertyuiopasdfghjklzxcvbnm1234567890QWERTYUIOPASDFGHJKLZXCVBNM'
    code=''
    for i in range(4):
          code+=str[random.randrange(len(str))]
    session['code']=code.lower()

    font=ImageFont.truetype(r'C:\Windows\Fonts\consola.ttf',25)

    for i in range(4):
		        pen.text((5+20*i,10),code[i],font=font,fill=get_color())
		    # 释放画笔
	 del pen

	 buf= io.BytesIO()

	 img.save(buf,'png')
	 response=make_response(buf.getvalue())
	 response.headers['Content-Type'] = 'image/png'
	 return  response	

记录理由

第一 是在熟悉一下
第二 flask中的返回和Django中的返回有点  不一样  
		Django中直接Httpresponse(buf.getvalue(),'image/png')
		但是在flask中还需要转化一下
相关标签: 验证码