【生活娱乐赛道】拼豆图纸工坊

0. 先和大家打个招呼吧 :waving_hand:

你是谁: 一名热爱手工艺的全栈开发者,平时喜欢用代码解决生活中的小问题。

你是怎么用 TRAE 把 Demo 做出来的:

整个开发过程像是在和一个懂你的搭档配对编程。我先把脑子里的想法拆成几个阶段,然后一句句讲给 TRAE 听:

需求阶段:我告诉 TRAE"我想做一个把图片转成拼豆图纸的工具",它帮我生成了完整的 PRD 文档和技术架构设计,把模糊的想法变成了清晰的产品规格。这一步让我觉得"原来产品规划可以这么高效"。

核心引擎阶段:拼豆最关键的是色彩匹配。我跟 TRAE 说"需要把图片像素精准匹配到拼豆色号",它不仅实现了基本的 RGB 距离匹配,还主动引入了 CIE76 色差公式和 Lab 色彩空间,配色准确度大幅提升。这一步让我跨过了"色彩科学"这个原本以为搞不定的坎。

编辑器阶段:Canvas 画布的缩放、平移、网格绘制、鼠标交互是最复杂的部分。我描述了"像专业绘图软件一样的编辑体验",TRAE 帮我实现了画笔/橡皮擦/填充/吸色全套工具,还支持撤销重做和边框拖拽调整尺寸。

打磨阶段:模板市场、批量处理、多格式导出,这些功能我一个个提需求,TRAE 一个个实现,每次迭代都能快速看到效果。

最大的感受是:TRAE 让我能专注在"想做什么"而不是"怎么写代码"上,大大缩短了从想法到成品的距离。

1. Demo 简介

是什么: 一款基于 Web 的拼豆图纸创作工具(网站应用),支持图片一键转拼豆图纸、手动编辑、色号统计和批量处理,浏览器直接打开即可使用,无需安装。

面向谁: 拼豆手工爱好者、手工艺创作者、DIY 玩家、儿童教育工作者。

主要功能:

功能一:智能图片转拼豆图纸
上传任意图片(JPG/PNG/GIF),系统自动进行点阵化处理,匹配 221 种内置拼豆色号,生成可制作的网格图纸。基于 CIE76 色差公式实现精准配色,支持自定义网格尺寸(26×26 到 104×104)。

功能二:专业级图纸编辑器
提供画笔、橡皮擦、填充、吸色四大工具,支持撤销/重做、画布缩放平移、网格线开关、10×10 分区辅助线。独创的边框拖拽功能可实时调整画布尺寸,像专业绘图软件一样流畅。

功能三:模板市场 + 批量处理
内置动物、表情、字母、图案等分类模板,一键加载快速开始创作。支持多张图片拖拽上传、统一尺寸批量转换、一键批量导出,大幅提升创作效率。

2. Demo 创作思路

灵感来源:

团队成员本身是拼豆手工爱好者。在多次制作过程中,深感"找图难、转图难、配色难"的痛点。每次想把一张喜欢的图片做成拼豆作品,需要手动在 Excel 里一格一格描图,一张简单图案就要耗费数小时;配色完全靠肉眼比对色卡,成品和预期差距大;材料用量也全靠估算,经常买多或买少。

市面上缺少一款真正从用户视角出发、兼顾新手友好与专业功能的拼豆图纸工具。于是决定用技术为爱发电,打造这款应用。

想解决的问题:

手动描图耗时巨大(数小时 → 几秒钟)
肉眼配色不准确,色差大
无法自动统计每种颜色的用量
新手缺乏模板参考,入门门槛高
为什么做这个方向:

拼豆作为一种低成本、高创意的手工艺术,具有广泛的群众基础和疗愈属性。选择这个方向是因为:

痛点真实存在:手工社区中大量用户反映转图难的问题
技术可行:Canvas API + 色彩科学可以很好地解决核心问题
价值明确:降低创作门槛,让更多人享受手工乐趣
差异化:现有工具功能单一,我们提供一站式完整体验

3. Demo 体验地址(三选一)

拼豆图纸工坊_体验包.zip (451.8 KB)

4. TRAE 实践过程

Session 1:需求规划 + 图片处理引擎 + 编辑器 UI
Session ID: 6a355f43fb29ccfa4bd889f4 沙箱配置验证: “file_inherit_user”: “D:\pindou”(确认工作目录指向项目 d:\pindou)

这是项目的起始 Session,完成了从 0 到 1 的核心功能开发:

关键任务 1 — 需求规划与架构设计

向 TRAE 描述了产品愿景:“做一个把图片转成拼豆图纸的 Web 工具”。TRAE 帮助生成了完整的 PRD 文档(PRD_拼豆图纸工坊.md)和技术架构文档(技术架构_拼豆图纸工坊.md),明确了:

4 个核心页面(首页、编辑器、模板市场、批量处理)
核心数据模型(Project、ColorInfo、ProjectSettings)
图片处理流水线设计
组件架构树
关键任务 2 — 核心图片处理引擎 + 色板系统

向 TRAE 描述需求:“需要把图片像素精准匹配到拼豆色号”。TRAE 实现了:

imageProcessor.ts:图片加载、缩放、对比度增强、点阵化转换
palette.ts:221 种拼豆色号(16 个色系),RGB → XYZ → Lab 色彩空间转换
CIE76 色差公式精准配色,预计算 Lab 值加速匹配
颜色用量自动统计
核心函数 processImageToGrid() 和 matchToPaletteFast()
关键任务 3 — 编辑器 UI + Canvas 画布渲染

向 TRAE 描述:“需要像专业绘图软件一样的编辑体验”。TRAE 实现了:

CanvasArea.tsx:Canvas 画布渲染,支持缩放平移、网格线、10×10 分区线
ToolBar.tsx:画笔/橡皮擦/填充/吸色四大工具
鼠标交互(绘制、平移、滚轮缩放)
边框拖拽实时调整画布尺寸(resizeSide 功能)
撤销/重做栈管理
ColorPalette.tsx:221 色按色系分组展示
PreviewPanel.tsx:原图/图纸双视图对比
关键任务 4 — 模板市场 + 批量处理 + 导出功能

向 TRAE 逐一描述需求,实现了:

TemplateMarket.tsx:内置 12 个模板(动物/表情/字母/图案),分类筛选与搜索
BatchProcess.tsx:多图拖拽上传、统一尺寸转换、批量导出、预览弹窗
exportUtils.ts:PNG/JPG 导出、A4/A5 打印排版(300dpi)、工程文件保存
SettingsBar.tsx:网格尺寸切换、滤镜(像素化/卡通化/线稿)、亮度对比度调节
Session 3:编辑器优化 + 功能验证 + 开发环境配置
Session ID: 6a2d0deb765d3a45ef278d78 沙箱配置验证: “file_inherit_user”: “D:\pindou”(确认工作目录指向项目 d:\pindou)

这个 Session 聚焦于编辑器细节打磨和全功能验证:

关键任务 1 — 色板布局与画布交互优化

向 TRAE 反馈:“色板区域太大,下方有空白”。TRAE 调整了布局方案:

色板高度固定为 100px,显示 2-3 行颜色
根容器改为 h-screen flex flex-col 确保全屏覆盖
画布空白区域拖拽实现页面平移(不缩放画布)
顶部栏、SettingsBar、色板使用固定高度,主画布区域用 flex-1 占满剩余空间
关键任务 2 — 开发服务器端口冲突解决

启动开发服务器时端口 5173 被占用,TRAE 帮助修改 vite.config.ts 添加 server.port: 5175,并停止占用端口的旧进程,服务器成功启动。

关键任务 3 — 全功能验证

逐项确认了四个开发阶段的完成状态:

阶段一:4 个核心页面 + 数据模型 + 组件架构 ✓
阶段二:图片处理引擎 + 色板系统(CIE76 匹配 + Lab 色彩空间)✓
阶段三:编辑器 UI 全部组件(Canvas 渲染、工具栏、色板、预览、撤销重做、边框拖拽)✓
阶段四:模板市场(12 模板)、批量处理、导出功能、设置栏 ✓
Session 2:打包部署 + CORS 修复 + 体验包生成
Session ID: 6a35617a4ce8af3a014493a6 工作目录验证: c:\Users\LENOVO.trae-cn\work\6a35617a4ce8af3a014493a6\ 下包含 fix-experience-pack.js、inline-html.js 等脚本,均指向 d:\pindou 内存记录验证: session_memory_6a35617a4ce8af3a014493a6.jsonl 记录了 7 个关键任务

这个 Session 解决了从开发到交付的最后一系列工程问题:

关键任务 1 — 项目构建与打包

修改 vite.config.ts 添加 base: ‘./’(相对路径配置),执行 npm run build 构建生成 dist/ 目录,打包为 拼豆图纸工坊_体验包.zip。

关键任务 2 — CORS 跨域错误修复

构建产物在 file:// 协议下打开时,浏览器阻止 ES Module 的跨域请求。TRAE 分析原因后,将 JS、CSS、favicon 全部内联到单个 HTML 文件中,消除所有外部资源引用。

关键任务 3 — Google Fonts 超时 + JS 语法错误修复

内联后发现两个新问题:

Google Fonts 在国内被墙,@import 请求超时 → 从 CSS 中移除该 @import
String.replace() 将 JS 代码中的 $& 解释为特殊替换模式,导致语法错误 → 改用 split().join() 处理,$ 被原样保留
关键任务 4 — React Router 路由修复

BrowserRouter 基于 History API,在 file:// 协议下无法匹配路由,页面空白。改为 HashRouter 后,路由通过 # 锚点处理(如 index.html#/editor),完全兼容 file:// 协议。

关键任务 5 — Passive Event Listener 警告修复

React 17+ 的 onWheel 默认注册为 passive listener,不允许调用 preventDefault(),控制台刷屏警告。改为通过 useEffect 用原生 addEventListener(‘wheel’, handler, { passive: false }) 注册,问题解决。

关键任务 6 — 最终体验包打包

整合所有修复,重新构建并内联,打包生成最终版 拼豆图纸工坊_体验包.zip(451.8 KB),双击 index.html 即可在浏览器中完整体验。



5. 对应的报名审核通过的帖子链接

好看的前端!我喜欢!

已投票~互相支持一下

哇哦,很有创意,已投票。麻烦帮帮我给我的作品投一票,互相支持支持吧https://forum.trae.cn/t/topic/96939/15?u=一叶孤舟

很有趣!我喜欢!

已投票~互相支持一下~
也来看看我的帖子吧,为听障人士做的公益AI服务员
AI服务员-无声有市:一部手机,让无声摊位也能开口接单

为什么我下载demo导入图片一键生成是空白的图纸,但是相同的图片在后面批量生成可以显示图纸?

已支持,加油!