django中简单的验证码创建.
from PIL import ImageFont, ImageDraw, Image
# 采用rgb方式随机创建背景色
bgColor = (random.randrange(50,200 ), random.randrange(50, 200), 0)
# 规定宽高
width = 100
height = 25
# 创建画布
image = Image.new('RGB', (width, height), bgColor)
# 创建画笔
draw = ImageDraw.Draw(image)
# 构造字体对象
# 设置字体对象,linux中可以通过fc-list 查看字体
# fc-list :lang=zh 可以查看所有中文字体
font = ImageFont.truetype('ukai.ttc', 26)
# 创建文本内容
# 创建内容集合,可以加入所有字母和数字
txt_list = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','1',
'2','3','4','5','6','7','8','9','0']
string = ''
for i in range(4):
string += str(random.choice(txt_list))
# print(string)
# 逐个绘制字符
draw.text((0, 0), string, (255, 255, 255), font)
# 保存到内存流中
import io
buf = io.BytesIO()
image.save(buf, 'png')
# 将内存留中的内容输出到客户端,以 image/png形式
return HttpResponse(buf.getvalue(), 'image/png')
以上方法实现的相当简单,实际上还能通过加入斜线,倾斜,背景色渐变等加强分辨的难度以剔除机器人.
此为作者初学成果,望大佬嘴下留情.