From 1ebe317aa7e80647698d6dea387c284ad29171b3 Mon Sep 17 00:00:00 2001 From: agent Date: Wed, 29 Jul 2026 16:21:53 +0000 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=85=B8=E7=8B=B1=E9=95=BF=E6=B5=8B?= =?UTF-8?q?=E8=AF=95=E6=A1=88=E4=BE=8B=E2=80=94=E2=80=94=E7=BA=BF=E7=A8=BF?= =?UTF-8?q?=E9=A3=8E=E6=A0=BC=E5=8C=96=E5=A4=84=E7=90=86+=E4=B8=8A?= =?UTF-8?q?=E5=B1=8F+=E5=9B=BE=E7=89=87=E8=BE=93=E5=85=A5=E6=9C=BA?= =?UTF-8?q?=E5=88=B6=20review=20=E5=85=A5=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- analysis/web/warden_400x300.png | Bin 0 -> 33323 bytes docs/field-test-result.md | 20 ++++++++++++++++++++ 2 files changed, 20 insertions(+) create mode 100644 analysis/web/warden_400x300.png diff --git a/analysis/web/warden_400x300.png b/analysis/web/warden_400x300.png new file mode 100644 index 0000000000000000000000000000000000000000..a96d3e1fdbe3da6dc83908603c7f116a61b6ac2c GIT binary patch literal 33323 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 literal 0 HcmV?d00001 diff --git a/docs/field-test-result.md b/docs/field-test-result.md index 78b3709..b4e94c1 100644 --- a/docs/field-test-result.md +++ b/docs/field-test-result.md @@ -65,3 +65,23 @@ - 设备睡眠:广播窗口 30-60s,连接态清醒;现场统一 batch 单连接+守候循环 - bridge_server build 4:write alt=331f、notify 三订阅、EFEF 走 331f + +## 图片输入机制 review(典狱长测试案例,2026-07-29) + +**链路全景**:源图获取 → 设备适配处理 → 管线量化 → 双平面分块上传 → 槽位显示 + +| 阶段 | 实现 | 本案例 | +|---|---|---| +| 源图 | 任意 RGB 图(网络/本地) | 典狱长格赫罗斯 960×565(腾讯新闻角色文配图) | +| 设备适配 | 裁剪聚焦 + 风格化(本案例:FIND_EDGES 线稿+红区检测)→ 400×300 | 黑线白底 + 红手套点缀 | +| 管线量化 | `image_pipeline.process_image`:调整→抖动→1bpp MSB 双平面(bw: 任通道>0;red: R>0,G=0,B=0) | `--algo none`(已量化图,保线条锐利) | +| 上传 | 63×2 块 ×244B(03 ff/00 + 2B 偏移),`01` 结束 | slot 1(图二) | +| 显示 | `mode imageN`(e1000N+e2) | image1 | + +**机制评审结论**: +1. 任意风格图均可达:预处理(PIL 全能力)与设备管线解耦,风格化在本地完成,设备只收 1bpp 结果——**图片输入机制通用、可编程、agent 可编排**。 +2. 已量化图必须用 `--algo none` 直通,避免二次抖动破坏线条。 +3. 三色通道映射与固件一致(bw=黑、red=红、双0=白背景)。 +4. 待办:处理脚本可产品化为 `ppclock image --style lineart`(后续增强项)。 + +测试产物:analysis/web/warden_400x300.png(400×300 线稿)+ 上屏实拍(待用户目视确认)。