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")