使用基于python的captcha生成图像验证码 、添加噪点和干扰线。
将图像保存至BytesIO对象,无需生成临时文件。
使用base64.b64encode方法直接将字节流转换为base64编码。
返回验证码字符串和图像的验证码图像的base64编码。
from captcha.image import ImageCaptcha
from random import randint
from base64 import b64encode
from io import BytesIO
def VCode(length=6, randcolor=GenerateRandColor(),
# length: 验证码长度
# randcolor: 随机颜色
# words: 字符集
# noisecurve_number: 干扰线数量
# noisedot_width: 噪点尺寸
# noisedot_number: 噪点数量
# 返回值:
# key: 验证码字符串
# b64encode: 将验证码转换为base64
# 字典:去除了易混淆的O和l
words="0123456789abcdefghijkmnopqrstuvwxyzABCDEFGHIJKLMNPQRSTUVWXYZ",
noisecurve_number=1, noisedot_width=6, noisedot_number=32):
n, key = len(words), ""
generator = ImageCaptcha(width=290,height=60)
for i in range(length):
key += words[randint(0, n-1)]
img = generator.create_captcha_image(key, randcolor, inversedrgbcolor(randcolor))
for i in range(noisecurve_number):
img = generator.create_noise_curve(img, randcolor)
img = generator.create_noise_dots(img, randcolor, noisedot_width, noisedot_number)
file = BytesIO()
# 将图像保存在内存中
img.save(file, format='png')
# 使用BytesIO().getvalue()转换为字节流
bytes = file.getvalue()
return key, b64encode(bytes)
注意:captcha图像默认尺寸为160×60.
效果图