From 0a22a0c0d25b61d2f65a2032aba9554818cef1d9 Mon Sep 17 00:00:00 2001 From: Developer Date: Tue, 2 Jun 2026 10:09:48 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=A4=A7=E5=B0=8F=E7=8E=8B=E8=A7=92?= =?UTF-8?q?=E6=A0=87=E4=B8=8D=E6=98=BE=E7=A4=BA=20=E2=80=94=20background?= =?UTF-8?q?=5Fcolor=20=E8=A2=AB=E5=85=A8=E5=B1=80=E7=99=BD=E5=BA=95?= =?UTF-8?q?=E8=A6=86=E7=9B=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit draw_joker 用 design.get('background_color', default) 试图取 fallback, 但整副牌默认就是白底,所以 fallback 永远走不到。 大王显示成白底 + 白字 = 看不到,小王同理。 修复:从 project.card_overrides[card_key] 单独读 background_color, 没有就硬编码回默认绿/红(不被 project.design 全局色污染)。 --- backend/apps/exports/utils.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/backend/apps/exports/utils.py b/backend/apps/exports/utils.py index cba0f5a..25722b6 100644 --- a/backend/apps/exports/utils.py +++ b/backend/apps/exports/utils.py @@ -296,8 +296,14 @@ def draw_joker(canvas, design, which, project, card_key, asset): """绘制大小王:独立背景 + 主体图 + 文字""" w, h = canvas.size - # 优先用单牌覆盖的背景色 - bg_color = design.get('background_color', '#1B5E20' if which == 'big' else '#B71C1C') + # 大小王默认有自己的背景色(绿/红),不被整副牌的 background_color 覆盖 + # 除非用户显式在 card_overrides 里设了 background_color + default_bg = '#1B5E20' if which == 'big' else '#B71C1C' + card_overrides = (project.card_overrides or {}).get(card_key, {}) + if 'background_color' in card_overrides: + bg_color = card_overrides['background_color'] + else: + bg_color = default_bg canvas.paste(hex_to_rgba(bg_color, 255), (0, 0, w, h)) # 主体图