一枚参数叶片,给 AI 绘图一个稳定参照 同样一句“细长的秋叶”人脑里可能是柳叶模型却可能画成枫叶。继续堆风格词有时能改善气氛却没有解决形状歧义。我会先画一张最简参数草图把长宽、中脉和轮廓交代清楚再让模型提颜色、纸张和构图方案。参考图能约束什么Google 的 Nano Banana 2.1 模型页介绍了参考图融合与图像编辑能力。对创作工具这意味着草图可以成为输入材料它没有承诺参数会被逐像素遵守。原始 SVG 和生成结果需要分开留存轮廓是否偏离仍由人核对。内图标注的是参数含义并非按 160/48 等比测绘下面的 SVG 才直接使用这些数值。下面只生成一枚对称叶片长度 L、半宽 W以两段三次 Bézier 曲线围合。它没有描述叶子的失水、组织结构或真实生长规律。控制点横向偏移设为4W/3是因为本段曲线中点的偏移为控制点偏移的四分之三最终中部半宽才接近 W。参数名若写“半宽”计算就应该兑现这个含义。参数卡应随图保存导出时在desc中保留参数可以减少后来“这片叶子怎么画出来的”的猜测。若接入 AI 编辑任务卡还应写明哪些形状必须保留哪些地方允许自由发挥例如“不改变叶尖和长宽比允许修改纸纹与配色”。模型最终仍可能偏离参数卡提供的是比对基准。运行node leaf.js会得到leaf.svg并检查尺寸拒绝与曲线中点。路径命令的含义可对照 SVG 2 路径规范。本地只验证了几何计算与文本导出未测试绘图模型、浏览器字体或实体印刷。把形状说清楚以后创作并没有变窄。它只是让讨论从“更像一片叶子”变成“保留这条轮廓再试一种光”。这种小而明确的参照很适合独立工具。可独立运行的核心例子const fsrequire(node:fs); function leaf(L,W) { if(!Number.isFinite(L)||!Number.isFinite(W)||L20||L500||W2||WL/2) throw Error(L需20..500W需2..L/2); const c4*W/3, cxc12, top12, bottomtopL; const dM${cx},${top} C${cxc},${topL/3} ${cxc},${top2*L/3} ${cx},${bottom} C${cx-c},${top2*L/3} ${cx-c},${topL/3} ${cx},${top} Z; return svg xmlnshttp://www.w3.org/2000/svg viewBox0 0 ${2*cx} ${L24} desc叶片长度${L}中部半宽${W}参数化示意/desc path d${d} fill#bfcb92 stroke#617354/ path dM${cx},${top} L${cx},${bottom} stroke#617354/ /svg; } const cubic(a,b,c,d,t)(1-t)**3*a3*(1-t)**2*t*b3*(1-t)*t*t*ct**3*d; if(Math.abs(cubic(0,64,64,0,.5)-48)1e-9) throw Error(半宽错误); let rejectedfalse;try{leaf(100,80);}catch{rejectedtrue;} if(!rejected) throw Error(错误尺寸应拒绝); fs.writeFileSync(leaf.svg,leaf(160,48)); console.log(已导出 leaf.svgL160W48);