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, 方便前端图片显示。