头像挂件 · 头套(可换图)
把任意"环形头套图"戴到 WorkBuddy 用户头像上的小技能。中间挖空区域自动对准头像,
头套的绒毛、耳朵、五官会围绕在头像周围。
当前挂件图:白色绒毛熊耳头套(parent.png,500×500)。
历史挂件图备份:parent_backup_penguin.png(黑企鹅)、parent_backup_1280_old.png(初版 1280×1280)。
资源
| 文件 | 说明 |
注意
素材库公开清单地址:https://gscok.xyz/asset-index.json
素材浏览网页入口:👉 点击打开素材库网页挑选壁纸
| config.json | 挂件配置(名称、偏移、缩放、是否圆形头像) |
| parent.png | 当前头套图(RGBA 透明 PNG,中间洞口已挖空) |
| index.js | CDP 注入脚本(带守护) |
| start-frame.bat | 一键启动器 |
| tools/measure-hole.py | 实测洞口几何参数(纯 stdlib,无需第三方库) |
| tools/inspect-image.py | 诊断图片透明度:alpha 分布 + 四角/中心像素取样 |
| tools/clear-hole.py | 把"抠图工具填成纯色"的洞口真正挖空(置 alpha=0) |
| tools/verify-frame.js | 校验贴合度(中心偏移/洞口宽度/是否被裁切),可导出效果图 |
配置说明(config.json)
{
"type": "avatar-frame",
"name": "白色绒毛熊耳头套",
"offsetX": 0, // 水平偏移像素(正数向右)
"offsetY": 0, // 垂直偏移像素(正数向下)
"scale": 1.0, // 缩放倍数(1.0 = 脸部洞口正好等于头像)
"roundAvatar": true // 头像是否裁剪为圆形(UI 默认就是圆形)
}
使用
- 确保 WorkBuddy 已用
--remote-debugging-port=9222启动(用
curl -s http://127.0.0.1:9222/json/version可快速自检) - 启动守护(每 5 秒自检重注入):
- 双击start-frame.bat,或
-node index.js(后台运行) - 只注入一次(调试用):
node index.js --once - 摘下来:
node index.js --remove(或右键桌面宠物 → 移除)
5.本技能接入线上公开素材库,现有素材分类包含:
- 🎭头套素材:各类趣味头像头套资源
- 🐾宠物动作帧:一套9张连续动作帧图片,适合做动态壁纸、展示素材
- 🎨各式壁纸:内置14套成品壁纸主题,还有更多额外素材持续更新
- ⚔三国系列:关羽、赵云、貂蝉等三国萌化人物素材
- 🐇动物系列:猫咪、小狗等各类萌宠小动物静态、GIF动图素材
- 😂玩梗系列:网络趣味玩梗插画、表情包类壁纸素材
> 🚧开发预告:M2D、M3D、数字人相关功能目前待开发,后续版本更新上线。
素材库公开清单地址:https://gscok.xyz/asset-index.json
素材浏览网页入口:👉 点击打开素材库网页挑选壁纸
启动CDP注入进程,看门狗守护,重启电脑配置不丢失
头像识别
默认匹配 .user-menu-trigger-avatar(左下角用户菜单触发器里的头像,32×32 圆形)。
如需匹配其他头像,编辑 index.js 的 AVATAR_SELECTORS 数组。
脸部洞口自动对齐
parent.png 的洞口由 洪泛法实测:从画布四边标记"外部透明",剩下的透明像素即被绒毛包围的洞口。
当前图(500×500)实测:
| 参数 | 归一化值 | index.js 变量 |
|---|---|---|
| 洞口中心 X | 0.4999 | faceNormCx |
| 洞口中心 Y | 0.5512 | faceNormCy |
| 洞口等效半径 | 0.2434 | faceNormR |
脚本会:
1. 读取头像实际尺寸与位置
2. 计算头套显示尺寸 = 头像半径 ÷ faceNormR × scale(scale=1.0 时洞口正好包住头像)
3. 定位头套使洞口中心精确对准头像中心
4. 应用 offsetX/offsetY 微调
> faceNormR 取值经验:洞口接近正圆时用面积等效半径;
> 洞口明显扁(如企鹅头套半宽 0.2727 / 半高 0.2227)时用半宽,横轴贴齐、纵轴被绒毛压住,更像"戴上"。
换头套图(重要)
换图必须重新测量洞口,否则会出现错位、或洞口过大导致头像悬浮在圈里:
# 0) 备份当前图
cp parent.png parent_backup_xxx.png
# 1) 先看图片是否可用(关键:中间洞口必须是透明的)
python tools/inspect-image.py 新图.png
# - 四角 alpha=0 而 中心 alpha=255(纯白/纯灰)→ 抠图工具把洞填成了实色,先挖洞:
python tools/clear-hole.py 新图.png parent.png
# - 中心 alpha=0 → 洞口本来就透明,直接拷贝:
cp 新图.png parent.png
# 2) 实测洞口参数
python tools/measure-hole.py parent.png # 读 centroid_norm / half_w_norm / equiv_r_norm
# 3) 把结果填进 index.js 的 faceNormCx / faceNormCy / faceNormR
# 4) 重新注入 + 校验
node index.js --remove && node index.js --once
node tools/verify-frame.js ./shots # 顺带导出 full.png / zoom.png
验收标准(tools/verify-frame.js 会自动判定):
- 挂件洞口中心 = 头像中心(偏移 ≤ 1px)
- 洞口宽度 ≈ 头像直径
- 挂件 left ≥ 0、top ≥ 0(贴窗口左边缘的头像不应被裁切)
挖洞参数(clear-hole.py)
| 参数 | 默认 | 说明 |
|---|---|---|
--seed |
取中心 5×5 均值 | 洞口填充色 |
--tol |
14 | RGB 欧氏距离容差,漏进绒毛就调小 |
--limit |
0.42 | 洪泛最大半径(占图宽比例),防漏 |
判断是否挖对:输出里 cleared_px 与 bbox 面积之比应≈ 0.78(椭圆理论值 π/4);
明显小于 0.78 说明被内部高光挡住,明显偏大或 bbox 超常说明漏进了绒毛。
常见坑
- 换了
parent.png但界面没变:守护进程启动时就把图片读进内存了,必须重启守护(--remove后重新注入)。 - 挂件中心准但看起来偏:洞口本身不是正椭圆、或头套图案重心偏(如企鹅的喙伸进洞里),用
offsetX/offsetY微调。 - 头像贴窗口左边缘导致挂件被裁:挂件尺寸越小越不容易裁;必要时调小
scale。
与宠物技能共存
可与 lvbu-pet / guanyu-pet 宠物同时运行,守护进程独立。
备注
新建文本文档.txt是空文件,可删除