File size: 1,049 Bytes
daa9d8a
f5cf708
daa9d8a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
from fastapi import FastAPI, APIRouter, Response, Depends
from captcha.image import ImageCaptcha
from io import BytesIO

router = APIRouter()

# 依赖注入,获取 FastAPI 应用实例
def get_app() -> FastAPI:
    return FastAPI()

@router.get("/webtools/captcha")
async def get_captcha(app: FastAPI = Depends(get_app)):
    # 生成随机验证码字符串
    captcha_text = "123456"  # 这里只是一个示例,实际应用中应该生成一个随机字符串
    # 创建验证码图片
    image = ImageCaptcha(width=280, height=90)
    image.write(captcha_text, "captcha.png")
    
    # 将验证码字符串存储在内存中,以便后续验证
    # 注意:实际应用中应该使用更安全的方式存储验证码,例如使用会话或数据库
    app.captcha_text = captcha_text
    
    # 读取图片内容并返回
    image_buffer = BytesIO()
    image.write(captcha_text, image_buffer)
    image_buffer.seek(0)
    
    # 返回图片数据
    return Response(content=image_buffer.getvalue(), media_type="image/png")