Django生成验证码图片
用到的模块: io, random, pillow(需要安装)
安装pillow模块:
# CMD运行下面命令 pip install pillow
代码:
# views.py import random from PIL import Image, ImageDraw, ImageFont from io import BytesIO ''' BytesIO: 能够存储数据,并以二进制的格式再返回 Image: 产生图片 ImageDraw: 产生画笔 ImageFont: 控制字体样式 ''' # 随机生成三原色 def get_random(): col_num = random.randint(0, 255) return col_num, col_num, col_num # 生成随机验证码图片 def get_code(request): # 生成图片 参数位置对应: 颜色样式, (长, 宽), 三原色 img_obj = Image.new('RGB', (263, 33), get_random()) # 在图片上生成一个画笔对象 img_draw = ImageDraw.Draw(img_obj) # 字体样式 img_font = ImageFont.truetype('字体路径', '字体大小int类型') # 随机生成验证码 code = '' for i in range(5): random_upper = chr(random.ranint(65, 90)) random_lower = chr(random.ranint(97, 122)) random_int = str(random.ranint(0, 9)) # 将产生的而随机字符写在图片上 # 对应参数: temp:写的内容, get_random():三原色, img_font:字体 img_draw.text(('x轴坐标int', 'y轴坐标'), temp, get_random(), img_font) code += temp # 将随机字符串存入session request.session['code'] = code io_obj = BytesIO() img_obj.save(io_obj, 'png') return HttpResponse(io_obj.getvalue())
滑动验证码参考:极验
传送门:https://docs.geetest.com/