feat: 预设素材库 - 4 套主题 × 4 张图 = 16 张 PNG
主题:classical 古典宫廷(王子/皇后/国王/小丑)
modern 现代人物(小孩/女青年/男青年/小丑鱼)
astronomy 天文(星星/月亮/太阳/黑洞)
minimal 简笔符号(圆点/♀/♂/叉)
改动:
- 新增 LibraryAsset 模型(全局素材库,theme_id/role/asset_id 索引)
- 新增 seed_library 管理命令,用 Pillow 画 16 张 PNG 素材
- 新增 /api/projects/library/ 列表 API
- 新增 /api/projects/{pid}/library/{id}/apply/ 应用 API
把预设素材复制到 projects/<pid>/joker 或 face_card 下,作为该牌位的素材
- AssetPanel 加 tab 切换:「我的素材」+「预设主题」,主题可筛选、点击套用到当前牌
- 修复 generate_card_png 的 joker asset 匹配 bug:which 应该是 card_key(含前缀)才能匹配 asset_key
设计要点:
- 预设素材只画上半身(y=0~150),下半留空,让系统的'自动对称'流水线正确工作
- 预设素材 PNG 200×300,深色描边 + 半透明浅色填充,在任意牌面背景上叠加都清晰
This commit is contained in:
@@ -430,9 +430,10 @@ def generate_card_png(project, card_key, resolution='standard'):
|
||||
|
||||
# 3. 主体内容
|
||||
if card_key.startswith('joker-'):
|
||||
# which 是去掉前缀的 'big'/'small',但 asset_key 含 'joker-' 前缀
|
||||
which = card_key.split('-', 1)[1] # big / small
|
||||
asset = None
|
||||
for a in project.assets.filter(asset_type='joker', asset_key=which):
|
||||
for a in project.assets.filter(asset_type='joker', asset_key=card_key):
|
||||
p = os.path.join('media', a.file_path) if a.file_path else None
|
||||
asset = load_image_safe(p) if p else None
|
||||
break
|
||||
|
||||
Reference in New Issue
Block a user