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改成自己的就好了,需要的时候直接调用

原文地址:https://www.cnblogs.com/ivy-blogs/p/11016779.html