python 图片验证码生成并转为 base64 Data Url
使用 python 的 captcha 库(pip install captcha)生成图片验证码,顺带转成了 base64。
from io import BytesIO
from captcha.image import ImageCaptcha
import random
import base64
def generate_captcha():
captcha_str = ''.join(random.choice( '1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ') for i in range(4))
image = ImageCaptcha().generate_image(captcha_str)
buffer = BytesIO()
image.save(buffer, format='PNG')
data = buffer.getvalue()
return 'data:image/png;base64,' + base64.b64encode(data).decode()
注:
- 使用 random 生成了四位验证码字符串;
- 使用
BytesIO()
暂存图片,避免保存到文件操作; image
为 PIL 里的Image()
对象实例;- base64 编码前面加上了
data:image/png;base64,
方便前端图片显示。