Pindou Pattern Generator
Overview
将任意图片转换为可直接照着拼的拼豆施工图纸。核心流程:图片缩放到目标网格 → CIE Lab 空间最近色匹配(DeltaE 76)到 221 色拼豆色卡 → 渲染施工 PNG / 预览 PNG / 物料 CSV / 交互 HTML / 矢量 SVG。
Quick Start
所有工作通过 scripts/generate_pattern.py 完成,不要临时重写量化/渲染代码。
python3 scripts/generate_pattern.py <图片路径> \
--width 72 --brand MARD -o <输出目录>
输出五件套(<name> 为图片名或 --name 指定值):
| 文件 | 内容 |
|---|---|
<name>_pattern.png |
施工图纸:格内色号、10 格坐标与加重网格、色号用量图例 |
<name>_preview.png |
纯色吸附成品预览 |
<name>_bom.csv |
物料清单:五品牌色号 + HEX + 用量(UTF-8 BOM,Excel 可直接打开) |
<name>_pattern.html |
交互图纸:缩放、悬停查色号、切换品牌显示、点击图例高亮单色 |
<name>_pattern.svg |
矢量施工图纸:无限缩放不糊、打印无损(浏览器打开可直接打印) |
Workflow
- 确认需求参数:
- 网格宽度--width(默认 72 豆;人物头像建议 48–72,复杂场景 96–144)。--height不给时按原图纵横比自动计算。
- 品牌--brand:MARD(默认)/ COCO / 漫漫 / 盼盼 / 咪小窝。仅影响 PNG/CSV 上展示的色号;HTML 内嵌五品牌全部色号,可随时切换。
- 限色--max-colors:用户想少买豆时使用(如--max-colors 24),按用量保留前 N 色并就近重映射。 - 运行脚本(环境缺依赖时先
pip install pillow numpy,优先用项目/托管 venv)。 - 复杂场景(插画/照片)追加限色对比版:若全色版用色 >60,主动再跑一份
--max-colors 32(文件名加后缀如_32色),两版一起给用户对比 —— 视觉差别通常很小,但能省一大半豆。 - 交付:用 present_files 把产物一起发给用户(HTML 排首位,可直接预览),并附简短用量摘要(网格尺寸、用色数、总豆数、Top 色号)。
Notes
- 透明背景图片自动合成到白底。
- PNG 图纸标题与格内色号均为 ASCII,不依赖中文字体;跨平台可用。
- 色卡数据在
assets/palettes.json(221 HEX × 5 品牌编码,源自 pindou.online),不要修改编码,除非用户提供了新的官方对照表。 - v1.1 新能力速览:
- 镜像翻转
--mirror:水平翻转整张图纸(拼豆从背面拼时避免左右颠倒)。PNG 标题加[MIRRORED]标识,HTML 顶部显示[镜像]。 - 拼法符号化(默认开启):每个用色分配短符号
A, B, C, ... 0, 1, 2, ... AA, AB, ...(共 1296 个)。格内大印符号 + 右下角小印色号;图例区按 "符号 | 色号 | 用量" 展示;HTML 顶部新增"显示符号"复选框(关掉回到只显色号模式)。关掉用--no-symbols。 - 矢量 SVG 图纸(v1.2,默认生成):
<name>_pattern.svg是矢量图,浏览器打开可无限放大、色号永远清晰、打印无损。这是解决"位图 PNG 放大后看不清色号"的根治方案;关掉用--no-svg。 - 采购清单升级:CSV 现在每色都列 5 品牌袋数(MARD 整包混装 → 每色
—+ 合计行约 N 包混装;其他 4 品牌 →ceil(色用量 × 1.2 / pack_size),默认 pack=200/袋),末尾追加 "合计" 行直接发给淘宝/拼多多客服报价。调整粒数用--pack-size、MARD 整包规格用--mard-pack-size。 - 详细参数、调优建议与排障见
references/usage.md。
Resources
scripts/generate_pattern.py— 唯一入口脚本(量化 + 五种产物渲染)assets/palettes.json— 221 色 × 5 品牌色号对照数据references/usage.md— 参数详解、常见场景推荐参数、排障指南