fix: 个人微信二维码改为后端生成真正可扫的 PNG(前端 <img> 原渲染 HTML URL 失效)
This commit is contained in:
1 parent
75a708a14d
commit
950f86325a
2 files changed
+19
-4
No files matched your search
@@ -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))
|
||||
|
||||
Reference in new issue
Block a user