docs(memory): 记录图片处理设计,并压缩 MEMORY.md 去掉过期的 6 槽位说法

This commit is contained in:
tamakyi
2026-10-20 14:53:40 +08:00
parent c3d34b53d2
commit 927f378d9d
2 changed files with 101 additions and 70 deletions
+33
View File
@@ -164,3 +164,36 @@ iframe 内部仍是 1512,媒体查询按 1512 判定 → 结论是错的。
- 拖拽标签写 `top:-17px` 会贴到画板边缘被压线/裁切,改成放在框内左上角;
整块半透明填充会把人物罩成一层米色(看着像"框住空气"),改为纯虚线 + 角标签。
- 面板一多左栏就滚不到底:按使用频率重排(图层 → 背景 → 窄屏 → 图片池 → 配色)。
## 15:20 生成器:图片处理(透明度 / 压白 / 去色 / 裁边 / 去白底)
用户问「图片的透明度或者一些简单的处理能否安排上」。已实现并推送 `c3d34b5`。
**非破坏模型(关键设计)**
- `orig` 存上传时的**原始字节**(`FileReader.readAsDataURL`,不重编码),`fx` 只存参数,
每次处理都从 orig 重算 → 「压白 16% → 20%」不会叠加两次 webp 压缩。
- 打开面板看一眼就关:参数没变就**跳过重编码**,一个像素都不动(`fxSnapshot` 比对)。
这条不加,用户点开看看就会把图越磨越糊。
- 预览按 420px 宽算(滑杆跟手),完成时全分辨率重算;用序号 `fxSeq` 丢弃过期结果,
否则快速拖动时旧渲染覆盖新的。
**去白底两个坑(都实测过)**
- 手内侧 / 两腿之间是**闭合**白区,四边漫水进不去 → 按连通域单独掏,面积 ≥ 24 才掏
(更小的多是眼睛高光,掏了变透明洞)。
- **容差默认 16,不是 22**:背景 253、白袜子 237 只差 16。容差 30 实测把袜子吃穿(alpha 0)。
**验证(跑出来的)**
- `?dump=fx` 13 项断言全过:封闭孔开/关、容差 16 保袜子 / 30 吃穿、收边后轮廓 1px、
alpha 50%→128、压白 20% 时 237→241、去色后 R=G=B、裁边 200×160→80×40。
- `?dump=fxpipe` 链路:弹窗开关、预览 300×960、参数重开后仍在、改参后 dataURL 变、
**无改动时 dataURL 一字节不变**(这条是防回归的关键)。
- `?dump=fxkey` 端到端:把 shiroko 立绘合成到 253 白底再去白底,透明占比 46.3%,
与手写 floodfill 抠出来的 46.6% 差 0.3%。
- 生成的 CSS 仍过 `TestThemeCSSComplete` + `TestDecoSlotCount`。
**顺带**
- 工程文件升 v3:存 `orig` + `fx`,未处理时不重复存 dataURL(否则 json 平白翻倍);
读 v2 旧工程把 dataURL 当 orig 用。
- 新增 `?loadurl=` 把项目里的图直接当素材载入(不必先下载再上传),`?fxjson=` 给初始参数。
- 截图看出两个 UI 问题:拖拽标签 `top:-17px` 贴到画板边缘被压线、半透明填充把人物罩成米色
→ 改框内左上角标签 + 纯虚线(上一轮已修,本轮沿用)。