将景点图片转化为印章
把一张景点照片,变成一枚可以盖在明信片上的集章图案。核心不是"加滤镜",
而是换媒介:照片 → 套色版画 → 纸面压印 → 重新排版。
何时使用
- 用户上传景点/建筑/街景照片,要求做成印章、集章、版画、橡皮章、纪念章、明信片风格。
- 关键词:集章、印章、版画压印、橡皮章、邮戳、明信片、手帐贴纸、景点打卡图。
- 一次做多张时(系列图),务必走"统一命名规则 + 统一留白"的批量流程。
铁律(违反即不合格)
- 绝不交付带水印的图。必须走
compose重排版,水印带不进入成品(见 Phase 3)。 - 绝不纯单色。这是套色版画,不是黑白线稿。必须保留源图 2-3 种低饱和主色,
色块要真实铺开在对应区域(不能只在边缘暗示)。 - 标注文字统一拼音,第二行固定
Chongqing, China(地名按实际替换)。
同一系列里绝不能混用意译和拼音。 - 四边留白必须落在 12%–22%,且最大/最小留白比 ≤ 1.8。
- 裁切不得伤及内容。任何"按固定比例裁底部"的做法都是错的,必须先检测内容包围盒。
工作流
Phase 0 · 确认
- 主体是谁(只画主体,不画周围的高楼、人群、天空细节)。
- 拼音名是什么(大礼堂=Dalitang、解放碑=Jiefangbei、洪崖洞=Hongyadong、李子坝=Liziba)。
- 是否属于系列图(系列图要统一命名 + 统一留白 + 统一色调)。
Phase 1 · 生成(图生图)
调用图像生成工具,传 两张图:image1=原照片、image2=风格参考图,
input_fidelity=high,竖版 1024×1536。
Prompt 必须同时包含五段(缺一段就容易翻车):
- 风格:版画压印 / 橡皮章集章;木刻雕刻排线与飞白;油墨盖印的不均匀肌理。
- 色彩(关键):明确写"不要单色墨",并把色值写成十六进制铺开指定,
例如#e2cfa8 米黄墙面 / #b8cfe0 淡蓝天空 / #a8bf9a 灰绿树木 / #3c4a5a 墨蓝轮廓。
只说"保留一点颜色"模型不会照做——实测带色像素占比只有 18%,写成色值后能到 79%。 - 主体约束:只画主体,列出必须保留的标志性细节,明确排除的元素。
- 构图:内容块(印章 + 标注)水平居中、整体占画面约 55%、底部 25% 纯空白。
- 标注:印章正下方手写钢笔花体(handwritten cursive ink lettering)写拼音,
下面一行更小的Chongqing, China;背景米白明信片纸 + 细微纸纹;无水印无签名。
> 生成模型经常无视构图指令(内容会顶到 92%–97%)。不要靠重试解决,
> 交给 Phase 3 的重排版兜底。
Phase 2 · 体检(不要跳过)
python scripts/stampkit.py inspect <生成图>
看三件事:内容包围盒百分比、ASCII 密度图(内容分布是否合理)、底部 8% 是否干净。
如果 ASCII 图显示内容是"印章块 + 下方标注"两段,属正常;若只有一段,说明标注没生成,需重生成。
Phase 3 · 重排版(水印安全 + 留白控制)
python scripts/stampkit.py compose <生成图> -o <成品.png>
脚本做的事:
- 用纸色偏差(|RGB − 纸色|max > 55)检测内容包围盒 —— 彩图不能用灰度暗度,
否则淡黄、淡蓝这类浅色区域会被漏掉。
- 行/列方向:先切段(gap>12px)→ 过滤 <15px 的杂点段 → 相邻块间距 ≤120px 时合并
(印章和手写标注是两段,不合并会把标注整个丢掉)。
- 块内再裁齐 → 等比缩到宽度 ≤64% → 贴入新画布。
- 画布纸面:取生成图顶部的干净纸条,中值滤波去杂后镜像交替 + 16px 渐变拼贴。
- 内容块占画布高度 70%,上下留白相等,14px 羽化贴入。
水印带(画面底部 8%)根本不会进入内容块,因为内容块是从"内容包围盒"里抠的,
而不是"裁掉底部"得到的。
Phase 4 · 验证(门禁)
python scripts/stampkit.py audit <成品.png>
逐条检查 8 项指标,任何一项 FAIL 都不许交付。见 references/verification.md。
常见失败与修复:
| 失败项 | 原因 | 修复 |
|---|---|---|
| 带色比例 < 30% | prompt 没写死色值 | 重写 Phase 1 第 2 段,色值十六进制化 |
| 留白 < 12% | 内容块太大 | compose --content-ratio 0.62 |
| 底部不干净 | 水印或杂点进了内容块 | 检查原图 ASCII 图,收紧 bbox 后重跑 compose |
| 缺少标注段 | 生成时没画字 | 重生成,prompt 里把标注写成独立段落 |
Phase 5 · 交付与学习
python scripts/stampkit.py learn log <成品.png> --subject 洪崖洞 --rating 5 --note "暖橘灯光到位"
python scripts/stampkit.py learn digest # 规则库可读版
python scripts/stampkit.py learn stats # 历史统计与达标率
python scripts/stampkit.py learn calibrate # 用 ≥4 分样本反推理想区间(带棘轮锁)
每次交付前必须问用户满意度 1–5 分,只有 ≥4 分的样本才进校准统计——
用满意的作品定义"好",而不是把及格线当标杆。
自学习机制
memory/
├─ MEMORY.md 人维护的北极星(审美基线,不随数据漂移)
├─ rules.json 规则库:每条规则绑定一个可测指标,记命中/违背次数
└─ episodes.jsonl 创作账本(append-only)
references/
└─ learned-rules.md digest 自动生成的可读规则库
- 规则绑定指标 → 指标过了记命中、挂了记违背,规则自动升降级
(candidate → active → core),被推翻够多次自动退役。这是"自动学习"的关键。 - 基线校准带棘轮锁 → 用 ≥4 分样本反推理想区间,但只允许在默认区间 ±25% 内漂移,
否则标准会被一堆平庸作品慢慢拖低。 - 指标先于直觉 → 觉得"这张挺好看"不算数,
audit的数字才算数;
数字和人眼冲突时,记录下来,下次calibrate会调整,但不会无限妥协。
依赖
- Python + Pillow + numpy。本机的 numpy 在隔离 venv 里,用这个解释器跑:
C:/Users/Administrator/.workbuddy/binaries/python/envs/default/Scripts/python.exe - 脚本路径含中文,Windows 下用 Write/Read 工具读写,不要用 shell 重定向写文件。