从站点左上角的 .logo(渐变圆角方块 + 锁形图标)导出可直接用于 favicon / 应用图标 / 分享卡的 PNG 素材。
.logo
-flat
NxN
RGBA
rgba(154,88,245)
已导出并提交 docs/logo/ 下 10 个 PNG,commit 3316640。
docs/logo/
3316640
logo-1024.png
logo-512.png
logo-256.png
logo-128.png
logo-64.png
logo-1024-flat.png
全部 RGBA,四角 alpha = 0。
原站 .logo 的 box-shadow: 0 8px 20px -8px 按 40px 盒子调校, 等比放大到导出尺寸后向下外扩达主体边长的 37%。 而「主体居中 + 正方形画布」要求 向下外扩 ≤ (1-F)/(2F), F=0.88 时上限只有 6.8% —— 差一个数量级。 大柔光阴影装不进高填充率的正方形画布。
box-shadow: 0 8px 20px -8px
向下外扩 ≤ (1-F)/(2F)
处理:把阴影收紧为 offsetY 2% / blur 7% / spread -1%(均可辨认但占位小)。 如果更希望保留原来那种大柔光,只能二选一: ① 降低填充率(回到白边问题);② 输出非正方形画布。
offsetY 2% / blur 7% / spread -1%
未做目视复核 —— 本次视觉模型不可用,只做了数值验收。 若观感上阴影偏淡/偏重,调 blur 与透明度即可。
blur
第一版改完判据报 95 项全绿、主体占 87%,但阴影整个没了。 根因:裁切写成 im.crop(主体盒),主体以外的像素被整条裁掉。 虽然判据的判定对象是主体,而缺陷恰好只影响主体以外—— 判据越绿,缺陷越严重(阴影被裁掉后主体占比反而从 84% 升到 87%)。 已补「该留的还在」类判据并补反证。
im.crop(主体盒)
docs/logo/*.png
从 WSL 侧实测:
https://password.yangyq.net/ HTTP 200 52081 bytes https://password.yangyq.net/docs/logo/logo-1024.png HTTP 404 306 bytes
原因:_sp_deploy.sh 的部署范围只有 index.html(SRC="$SRC_DIR/index.html", cp 到 $REMOTE_DIR/index.html)。docs/ 自始至终只是 README 的配图目录,从未上线。
_sp_deploy.sh
index.html
SRC="$SRC_DIR/index.html"
cp
$REMOTE_DIR/index.html
docs/
index.html 里也不引用 docs/ 下任何文件(logo 是页面内联 SVG,不是 PNG), 所以线上不影响任何功能。
e09943f
python3
python
which python
/usr/bin/python3
10 个文件逐个读尺寸与模式,全部精确 NxN + RGBA:
logo-1024.png 1024x1024 RGBA logo-1024-flat.png 1024x1024 RGBA logo-512.png 512x512 RGBA logo-512-flat.png 512x512 RGBA logo-256.png 256x256 RGBA logo-256-flat.png 256x256 RGBA logo-128.png 128x128 RGBA logo-128-flat.png 128x128 RGBA logo-64.png 64x64 RGBA logo-64-flat.png 64x64 RGBA
origin/main
/home/yongquan/code/simple_password
D:/Yongquan/code/simple_password
README 双端 md5 均为 323eda62549fcb8892edfd6d6f32cc72。
323eda62549fcb8892edfd6d6f32cc72
9ca33a0
上一条收尾只做到"文档写了",没验证"文档能用"。实测三个问题:
cd ../_tooling
脚本住在仓库外的 _tooling/,按原来的写法在仓库根目录执行:
_tooling/
$ node _sp_logo_export.js node:internal/modules/cjs/loader:1433 throw err;
MODULE_NOT_FOUND。已在三段命令前补 cd ../_tooling。
MODULE_NOT_FOUND
_sp_logo_export.js
迁移到 WSL 时把 URL/OUT 从 D:/Yongquan/... 改成了 /home/yongquan/... —— Windows 侧就此废掉(会去读不存在的 /home/...)。上次"跨平台改造"只验证了 WSL 一端。
URL
OUT
D:/Yongquan/...
/home/yongquan/...
/home/...
修法:
const REPO = process.env.SP_REPO || path.resolve(__dirname, '..', 'simple_password'); const URL = pathToFileURL(path.join(REPO, 'index.html')).href; const OUT = process.env.SP_LOGO_DIR || path.join(REPO, 'docs', 'logo');
URL 用 pathToFileURL(),不手写 'file:///' + p(Windows 盘符会变 file://D:/,少一层斜杠)。 两端 node --check + 各实跑一次通过,脚本 md5 两端同为 d0e24e48。
pathToFileURL()
'file:///' + p
file://D:/
node --check
d0e24e48
同一份 index.html、同一版脚本,两端各重跑一次 docs/logo/:
结论:字体度量 + 阴影模糊实现的跨平台差异,不是脚本缺陷。
处置:WSL 重跑的产物已 git checkout 恢复,仓库仍是 Windows 版; README 与脚本头部都加了警告,说明重跑会得到一堆无法 review 的二进制 diff。
git checkout
🔴 记一条判据教训:"95 项判据全绿"不等于产物没变。内容一致性只能用 diff -r 判, 判据绿只说明几何关系对。
diff -r
README 双端 md5 2dd2686a89a1f87c7a3f63bc54d55261。 线上 password.yangyq.net HTTP 200 / 52081 字节 / md5 f0da5275 —— 本次没动 index.html,不受影响。
2dd2686a89a1f87c7a3f63bc54d55261
password.yangyq.net
f0da5275
No dependencies set.
The note is not visible to the blocked user.
需求
从站点左上角的
.logo(渐变圆角方块 + 锁形图标)导出可直接用于favicon / 应用图标 / 分享卡的 PNG 素材。
具体要求
-flat纯色无阴影版(适合贴彩色/深色背景)验收标准
NxN,模式RGBArgba(154,88,245),圆角处透明、四边中点不透明完成情况
已导出并提交
docs/logo/下 10 个 PNG,commit3316640。产物
logo-1024.png/logo-512.png/logo-256.png/logo-128.png/logo-64.pnglogo-1024-flat.png等同名-flat后缀全部
RGBA,四角 alpha = 0。与需求的一处偏差(需要说明)
原站
.logo的box-shadow: 0 8px 20px -8px按 40px 盒子调校,等比放大到导出尺寸后向下外扩达主体边长的 37%。
而「主体居中 + 正方形画布」要求
向下外扩 ≤ (1-F)/(2F),F=0.88 时上限只有 6.8% —— 差一个数量级。
大柔光阴影装不进高填充率的正方形画布。
处理:把阴影收紧为
offsetY 2% / blur 7% / spread -1%(均可辨认但占位小)。如果更希望保留原来那种大柔光,只能二选一:
① 降低填充率(回到白边问题);② 输出非正方形画布。
验收
rgba(154,88,245),四角透明,四边中点不透明,圆角正常一处未做的验证
未做目视复核 —— 本次视觉模型不可用,只做了数值验收。
若观感上阴影偏淡/偏重,调
blur与透明度即可。过程中的一个真实缺陷(已归档 pitfalls #503)
第一版改完判据报 95 项全绿、主体占 87%,但阴影整个没了。
根因:裁切写成
im.crop(主体盒),主体以外的像素被整条裁掉。虽然判据的判定对象是主体,而缺陷恰好只影响主体以外——
判据越绿,缺陷越严重(阴影被裁掉后主体占比反而从 84% 升到 87%)。
已补「该留的还在」类判据并补反证。
补充:README 补齐 + 线上 404 的定性
1. 线上
docs/logo/*.png返回 404 —— 是预期行为,不是故障从 WSL 侧实测:
原因:
_sp_deploy.sh的部署范围只有index.html(SRC="$SRC_DIR/index.html",cp到$REMOTE_DIR/index.html)。docs/自始至终只是 README 的配图目录,从未上线。index.html里也不引用docs/下任何文件(logo 是页面内联 SVG,不是 PNG),所以线上不影响任何功能。
2. README 改动(commit
e09943f)docs/logo/一行,并明写「只进仓库、不部署到站点」+ 那条 404 的结论,避免后面有人把它当成资源缺失去修。
python3而不是python—— WSL 里
which python为空,只有/usr/bin/python3(Pillow 12.1.1),照抄
python会 command not found。(初稿误写成 32/64/128/256/1024,与
docs/logo/里实际 10 个文件名对不上)。3. 校验
10 个文件逐个读尺寸与模式,全部精确
NxN+RGBA:4. 双端一致性
origin/maine09943f/home/yongquan/code/simple_passworde09943fD:/Yongquan/code/simple_passworde09943fREADME 双端 md5 均为
323eda62549fcb8892edfd6d6f32cc72。续:README 里写的命令实际跑不起来(commit
9ca33a0)上一条收尾只做到"文档写了",没验证"文档能用"。实测三个问题:
1. 三个代码块缺
cd ../_tooling脚本住在仓库外的
_tooling/,按原来的写法在仓库根目录执行:MODULE_NOT_FOUND。已在三段命令前补cd ../_tooling。2.
_sp_logo_export.js硬编码了单侧路径迁移到 WSL 时把
URL/OUT从D:/Yongquan/...改成了/home/yongquan/...——Windows 侧就此废掉(会去读不存在的
/home/...)。上次"跨平台改造"只验证了 WSL 一端。修法:
URL 用
pathToFileURL(),不手写'file:///' + p(Windows 盘符会变file://D:/,少一层斜杠)。两端
node --check+ 各实跑一次通过,脚本 md5 两端同为d0e24e48。3. 跨机器产物不可复现 —— 已实测,写进文档
同一份
index.html、同一版脚本,两端各重跑一次docs/logo/:结论:字体度量 + 阴影模糊实现的跨平台差异,不是脚本缺陷。
处置:WSL 重跑的产物已
git checkout恢复,仓库仍是 Windows 版;README 与脚本头部都加了警告,说明重跑会得到一堆无法 review 的二进制 diff。
🔴 记一条判据教训:"95 项判据全绿"不等于产物没变。内容一致性只能用
diff -r判,判据绿只说明几何关系对。
4. 终态
origin/main9ca33a09ca33a09ca33a0README 双端 md5
2dd2686a89a1f87c7a3f63bc54d55261。线上
password.yangyq.netHTTP 200 / 52081 字节 / md5f0da5275—— 本次没动index.html,不受影响。