flask 图片验证码

需求:python生成图片验证码,flask通过请求链接返回给前端img

1. 使用 PIL 生成图片验证码

from PIL import Image, ImageDraw, ImageFont
import random
import io

def random_gen_vcode():
    words = [chr(i) for i in range(65, 91)] + [str(i) for i in range(1, 10)]
    color = '#f8f8f8'    
    im = Image.new('RGBA', (63, 28), color)
    draw = ImageDraw.Draw(im)
    for i in range(4):
        font = ImageFont.truetype(r'e:\path\Gabriola.ttf', size=32)
        draw.text((13*(i+1), (13-(i+1)*random.randrange(1, 4))), words[random.randrange(0, len(words))], fill='#9999CC')
    #im.save(r'e:\path\zz.png')    
    # v = base64.b64encode(b.getvalue())    
    # return b'data:image/png;base64,' + v # 生成img base64 的数据    
    b = io.BytesIO()
    im.save(b, format='PNG') # 以png格式保存到io流中    
    b.seek(0) # 改变流动位置到首位    
    return b


2. 返回图片流

@app.route('/load_vcode')
def load_vcode():
    """加载验证码"""    
    return send_file(vcode.random_gen_vcode(), mimetype='image/png')

展开阅读全文