django生成验证码
作者:互联网
django生成验证码
1 # 制作验证码 2 def verify_code(): 3 # 1,定义变量,用于画面的背景色、宽、高 4 # random.randrange(20, 100)意思是在20到100之间随机找一个数 5 bgcolor = (random.randrange(20, 100), random.randrange(20, 100), 159) 6 width = 100 7 height = 30 8 # 2,创建画面对象 9 im = Image.new('RGB', (width, height), bgcolor) 10 # 3,创建画笔对象 11 draw = ImageDraw.Draw(im) 12 # 4,调用画笔的point()函数绘制噪点,防止攻击 13 for i in range(0, 100): 14 # 噪点绘制的范围 15 xy = (random.randrange(0, width), random.randrange(0, height)) 16 # 噪点的随机颜色 17 fill = (random.randrange(0, 255), 255, random.randrange(0, 255)) 18 # 绘制出噪点 19 draw.point(xy, fill=fill) 20 # 5,定义验证码的备选值 21 str1 = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ' 22 # 6,随机选取4个值作为验证码 23 rand_str = '' 24 for i in range(0, 4): 25 rand_str += str1[random.randrange(0, len(str1))] 26 27 # 7,构造字体对象 28 fontPath = os.path.join(settings.STATICFILES_DIRS[0], 'font/System San Francisco Text Medium.ttf') 29 30 font = ImageFont.truetype(fontPath, 23) 31 # 8,构造字体颜色 32 fontcolor = (255, random.randrange(0, 255), random.randrange(0, 255)) 33 # 9,绘制4个字 34 draw.text((5, 2), rand_str[0], font=font, fill=fontcolor) 35 draw.text((25, 2), rand_str[1], font=font, fill=fontcolor) 36 draw.text((50, 2), rand_str[2], font=font, fill=fontcolor) 37 draw.text((75, 2), rand_str[3], font=font, fill=fontcolor) 38 # 9,用完画笔,释放画笔 39 del draw 40 # 10,内存文件操作 41 buf = BytesIO() 42 # 11,将图片保存在内存中,文件类型为png 43 im.save(buf, 'png') 44 # 12,返回图片的二进制信息和图片的随机数字 45 return buf.getvalue(), rand_str
将fontpath改成自己的就好了,需要的时候直接调用
标签:rand,randrange,random,验证码,生成,str,django,font,fill 来源: https://www.cnblogs.com/ivy-blogs/p/11016779.html