这些装备图标是从游戏资源里批量 "切图" 提取的。完整链路如下:
1. 数据源
游戏资源 G:\media\UI\itemicons\ 里,火炬之光 1 用 Apple imageset 格式存放图标:每个 *.imageset 是一个 XML 索引文件,声明对应的大图(Imagefile=)以及里面每个图标的名字和位置(Name / XPos / YPos / Width / Height)。
2. 解析索引 + 筛选(build_icons.py)
- 解析全部
.imageset,得到 "图标名 → 在哪张大图里的哪个矩形" 的映射 - 从
items.json(物品数据库)收集所有物品引用的图标名,只切用到的,去重
3. 切图与处理
- 打开大图 PNG,按坐标
crop出每个图标 - 用
getbbox()裁掉透明边缘 - 等比缩放到 96×96 透明格(2px 边距)并居中,保证图标大小统一
4. 合成雪碧图(sprite)
- 每行 20 个拼成一张
data/sprite.png - 生成
icon_coords.json记录每个图标在雪碧图中的坐标
5. 嵌入单文件(build_html.py)
- 整张雪碧图转 base64 直接写进 HTML(
data:image/png;base64,…),坐标表一并内嵌 - 页面显示时用 CSS
background-image(整张雪碧图)+background-position(坐标)定位到对应图标
所以最终那一个 4.8MB 的 HTML 里,所有图标都在内部的 base64 雪碧图中,不依赖任何外部图片文件,双击即可离线使用。
评论 (0)