生成验证码
程序员文章站
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中还需要转化一下