fix: 个人微信二维码改为后端生成真正可扫的 PNG(前端 <img> 原渲染 HTML URL 失效)

This commit is contained in:
WorkBuddy committed 2026-07-09 21:29:50 +08:00
1 parent 75a708a14d
commit 950f86325a
2 files changed
+19 -4

No files matched your search

+16 -1
View File
@@ -249,9 +249,24 @@ async def wechat_qrcode(user: User = Depends(get_current_user)):
if not resp.ok:
return {"success": False, "error": f"获取二维码失败 HTTP {resp.status_code}"}
j = resp.json() if resp.content else {}
qr_url = j.get("qrcode_img_content") or ""
qr_img = None
try:
import io as _io
import qrcode as _qrcode
_buf = _io.BytesIO()
_q = _qrcode.QRCode(box_size=10, border=2)
_q.add_data(qr_url)
_q.make(fit=True)
_img = _q.make_image(fill_color="black", back_color="white")
_img.save(_buf, format="PNG")
qr_img = "data:image/png;base64," + base64.b64encode(_buf.getvalue()).decode()
except Exception:
qr_img = None
return {"success": True, "data": {
"qrcode": j.get("qrcode"),
"qrcode_img_content": j.get("qrcode_img_content"),
"qrcode_img_content": qr_url,
"qrcode_img": qr_img,
}}
except Exception as e:
raise HTTPException(status_code=500, detail=str(e))