拼豆图纸生成器设计:AI 出图,程序做像素化和色卡匹配
一个根据上传图片生成不同风格拼豆图纸的工具,AI 负责风格化、程序负责像素化和色卡匹配,图纸底部自动给出颜色清单和豆数统计。本文记录核心设计思路:为什么不让 AI 直接画最终图纸、端到端流程、风格选项、色卡匹配算法和默认参数建议。
#拼豆#工具#AI#Python#图像处理
拼豆图纸生成器设计#
最近一直在琢磨怎么把”上传图片 → 生成拼豆图纸”做成一个稳定可用的流程。结论是:AI 只负责风格化,程序负责像素化和色卡匹配。两层分工各有边界,混在一起就会翻车。
为什么不让 AI 直接画最终图纸#
让 AI 直接出 32×32 像素图,看上去很合理,实际有三个硬伤:
- 格子会歪:模型对”严格等分网格”的偏好不够强,输出的”格子”大小不均,拼起来对不上底板。
- 颜色数量虚高:AI 倾向于用渐变色表达细节,一幅图给你 60 种颜色,拼到怀疑人生。
- 豆数统计不准:模型没有逐格意识,给出的”每色 X 颗”基本是估算,实际拼起来数量对不上。
所以正确分工是:
| 层 | 职责 | 不能做的 |
|---|---|---|
| AI 风格化 | 把上传图变成指定风格的中间图(Q 版 / 像素 / 动漫) | 直接画最终网格图 |
| 程序后处理 | resize → 量化 → 色卡匹配 → 逐格统计 → 出 PNG/PDF/CSV | — |
端到端流程#
从用户上传图片到拿到可拼的图纸,完整流程:
上传图片
↓
裁剪主体、移除背景
↓
选择风格
↓
AI 风格化(可选)
↓
转换为 32×32 / 48×48 / 64×64 像素
↓
匹配真实拼豆色卡
↓
逐格统计颜色数量
↓
输出图纸、色卡清单和采购表
每一步都对应一段独立代码或一次模型调用,任何一步出错都可以单独重跑,不需要整条链路重来。
风格选项#
可以支持的风格包括:
- 原图还原:尽量保留人物、宠物特征
- Q 版萌系:大头、小身体、颜色更明亮
- 像素游戏:复古游戏角色风格
- 动漫风:线条清晰、肤色和发色分区明显
- 简约轮廓:颜色少、容易拼
- 马赛克写实:颜色更多,适合 64×64 以上
- 单色剪影:适合钥匙扣、小挂件
- 自定义主题:节日、情侣、萌宠等
色卡匹配#
颜色不是输出 HEX 色值,而是映射到真实可购买的豆色。支持的色卡:
- Perler(美国品牌,颗粒大、孔径统一)
- Hama(欧洲品牌,色彩偏柔和)
- Artkal(国产品牌,性价比高,C / S 两个系列)
- 自定义色卡(上传自己的色卡照片或 CSV)
匹配算法用色差(CIEDE2000 或 ΔE76),把每个像素颜色映射到色卡里最接近的真实豆色。这样出图直接能买、就能拼。
色卡清单格式#
图纸底部的色卡清单默认显示为:
| 编号 | 色块 | 颜色名称 | 色卡编号 | 数量 |
|---|---|---|---|---|
| A01 | ■ | 黑色 | Perler P80-19018 | 126 颗 |
| A02 | ■ | 橘色 | Perler P80-19004 | 183 颗 |
| A03 | ■ | 浅粉 | Perler P80-19033 | 74 颗 |
底部还会显示汇总信息:
- 总计:685 颗
- 底板:32×32(1024 格,有效 685 格,空 339 格)
- 色卡品牌:Perler 标准色
- 建议色数:8 色(简单图案上限)
默认参数建议#
按图案复杂度给一组默认值:
| 图案类型 | 网格 | 颜色上限 |
|---|---|---|
| 简单图案 / 剪影 | 32×32 | 8-12 色 |
| 人物头像 / Q 版 | 48×48 | 12-18 色 |
| 宠物 / 写实图片 | 64×64 | 16-24 色 |
默认规则:
- 背景格默认留空,不计白色豆(不计入”需要买的豆子”,但算入底板尺寸)
- 颜色数量超过上限时,按出现频率排序取 Top K,剩余像素合并到最接近的色
- 透明 / 灰白像素归类为”背景留空”
输出格式#
一次生成三种产物:
- PNG 图纸:带网格的可打印图纸,A4 尺寸适配
- PDF 图纸:多图纸合并打印版,每页 1 张 + 色卡清单
- CSV 色卡清单:颜色编号 / 名称 / HEX / 色卡编号 / 数量,方便直接当采购表
集成到现有网站#
这套功能可以做成 Web 端的一键生成:
- 用户上传图片
- 选择风格(Q 版 / 像素 / 动漫 / …)
- 选择尺寸(32 / 48 / 64)
- 选择色卡品牌(Perler / Hama / Artkal / 自定义)
- 设置颜色上限
- 一次生成多种拼豆方案对比
后端用 Python(PIL + numpy + scikit-learn KMeans)跑像素化和配色映射,前端上传 + 预览 + 下载。整条链路跑下来单图 30-60 秒。
下一步#
- 跑通单图 Demo:上传一张图 → 出 32×32 图纸 + 色卡清单
- 对比不同风格化方案(PIL 滤镜 vs MiniMax image-01 vs ComfyUI)
- 验证 KMeans 量化 + 色卡匹配的视觉效果
- 真做 1-2 个实物,确认”程序统计的豆数”和”实际买的豆数”误差 < 5%
- 如果效果稳定,再考虑集成到现有网站