0
Fork 0
mirror of https://github.com/Silent1566/webhtv.git synced 2026-11-14 02:00:15 +00:00
webhtv-mys/scripts/gen_app_icon.py
Silent1566 5c4dafe09e 修复:应用图标改版漏了应用内 logo、通知栏图标与网页 favicon
上一版重做图标(1e5b1384)只覆盖了启动器图标、TV 横幅和 Play 商店图,
另外三处承载 App 形象的资源没跟上,桌面已经是 MO 字标,应用内标题栏、
通知栏和网页管理端还是 2026-05 的旧立方体线框,同一个 App 两种标识。

补齐的三处,全部纳入 scripts/gen_app_icon.py 统一生成,不新增手工资源:

- ic_logo.png(手机版标题栏 / 电视版首页左上)
  用圆形而非圆角方形:ImgUtil.logo() 对远端 logo 做了 circleCrop(),
  本地兜底图必须同为圆形,否则配置里带 logo 时形状会跳变。
- ic_notification(anydpi 矢量 + mdpi..xxhdpi 位图)
  白色剪影 + 全透明底。Android 5.0+ 只取 alpha 通道重染,沿用带渐变底的
  图标会让整个方块都是非零 alpha,重染后变成一个纯色实心方块。
  填充比另设 FILL_NOTIFY=0.88:24px 下 M 竖干 2.27px,达到通知图标 2dp
  最小笔画;再放大边缘会贴到 24dp 边界被状态栏裁掉。
- favicon.ico(网页管理端)
  沿用原三帧规格 16/32/48,逐帧独立超采样渲染。交给 PIL 用 sizes= 缩放
  会让小帧由最大帧降采样、笔画糊成一团。

同时新增小尺寸降级:低于 WORDMARK_MIN_PX=32 就丢掉 M、只留 O 播放徽章。
16px 下 M 竖干只有 1.10px,抗锯齿后是一团灰,连"有两个字母"都读不出;
只留 O 时环厚 2.22px,且环厚/直径与字标里的 O 完全相同(0.20384),
两种形态字重一致。当前只有 16px favicon 帧走这条路径。

顺带把脚本里硬编码的两处 fill=0.64 提成 FILL_CIRCLE,并在文件头列出全部
六类落点,注明改图标必须整套重跑——这次遗漏就是因为清单只存在于上次的
提交说明里。

验证:
- mobile / leanback 两个 flavor 的 processResources 均通过
- 10 个启动器位图与 HEAD 逐字节一致,降级阈值未波及任何既有输出
- 通知位图四档确认纯白 RGB + alpha 渐变,内容框未越界
- favicon 三帧逐像素等于对应尺寸的原生渲染,非降采样;FAVICON_SIZES
  乱序输入也仍输出完整三帧
- ic_notification.xml 与脚本输出逐字符一致,无 android:tint 空操作
- ic_logo.png 600x600、四角全透明、不透明占比 0.777(圆形)
- 全仓扫描:已发布图标资源无一残留旧立方体配色

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-08-23 15:37:07 +08:00

534 lines
24 KiB