随机验证码(早年搜狗笔试题)

 

 



IOError: cannot open resource

提示找不到字体文件


附上代码:

# 随机图片
import random
def get_random():
    return random.randint(0, 255), random.randint(0, 255), random.randint(0, 255)
# 图片验证码
from PIL import Image, ImageDraw, ImageFont
from io import BytesIO, StringIO
def get_code(request):
    img_obj = Image.new('RGB', (600, 35), get_random())
    # 产生画笔对象
    img_draw = ImageDraw.Draw(img_obj)
    # 字体样式和大小
    img_font = ImageFont.truetype('app01/static/font/222.ttf', 30)
    # 随机验证码 五位数的随机验证码 数字 小写字母 大写字母
    code = ''
    for i in range(5):
        random_upper = chr(random.randint(65, 90))
        random_lower = chr(random.randint(97, 122))
        random_int = str(random.randint(0, 9))
        # 从这三个里面随机选择一个
        tmp = random.choice([random_lower, random_int, random_upper])
        # 将产生的随机字符串写入图片上
        img_draw.text((i*90+60, 0), tmp, get_random(), img_font)
        # 拼接随机字符串
        code += tmp
    print(code)
    # 随机验证码在登录的视图函数里面需要用到,要比对,所以要找地方存起来并且其他视图函数也能拿到
    request.session['code'] = code
    io_obj = BytesIO()
    img_obj.save(io_obj, 'png')
    return HttpResponse(io_obj.getvalue())

 

posted @ 2021-05-31 21:17  Jerry`  阅读(50)  评论(0编辑  收藏  举报