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