识别出牌匾的范围

昨天 17:441 浏览综合
我:能否识别出牌匾的范围,如果可以识别范围,放一个一样大小的隐形的框,玩家选择素材库的字放入隐形的框,自己就根据隐形的框的尺寸,调整字体大小
嗒:
这个想法可行,分析一下方案:
牌匾区域识别
牌匾是 roof_mid.png(152×217)里的一部分。可以用 Python 测量牌匾在图片中的相对位置(比例),定义为常量:
PLAQUE_TOP_RATIO    = 0.62   -- 牌匾顶部在图片高度的 62% 处
PLAQUE_HEIGHT_RATIO = 0.14   -- 牌匾高度占图片的 14%
PLAQUE_LEFT_RATIO   = 0.08   -- 左边距
PLAQUE_WIDTH_RATIO  = 0.84   -- 宽度占中段的 84%
渲染时的计算
因为 _RenderRoof 里已经知道中段的位置和尺寸 (roofLeft + capW, roofTop, midW, roofH),所以牌匾在 counter-rotation 空间中的矩形可以直接算出来:
plaqueX = midLeft + midW * PLAQUE_LEFT_RATIO
plaqueY = roofTop + roofH * PLAQUE_TOP_RATIO
plaqueW = midW * PLAQUE_WIDTH_RATIO
plaqueH = roofH * PLAQUE_HEIGHT_RATIO
文字放入流程
玩家从素材库选一个字的图片(如"悟")
数据层记录 mapData.plaqueChar = "pixel_char_悟_xxx.png"
渲染时在牌匾矩形内居中绘制,自动缩放到 plaqueH 高度(保持宽高比)
多个字也能处理:按字数等分 plaqueW,每个字缩放到对应格子内
需要注意的点
牌匾比例需要从实际图片精确测量一次(用 PIL 扫描木纹区域的边界)
中段是拉伸的,所以牌匾宽度会随砖墙宽度自适应,但高度和 roofH 绑定——这正好是你要的效果
字的图片建议保持正方形透明背景,这样缩放后居中效果最好
总结:方案可行,核心就是在中段图片中量出牌匾区域的比例常量,渲染时反算出实际矩形,字的图片自动适配这个矩形。
TapTap
3
1