电商场景里最常见的需求不是从零出图而是改图这张主图挺好就是背景想换个色模特图不错但衣服上的字要去掉。整张重出既浪费积分又保不住已经满意的部分。这篇讲怎么用甜甜圈APIdashengfenshen.cn做局部重绘也叫改图 / inpainting保住原图其余部分。一、思路把原图和意图一起给模型图像生成接口兼容 OpenAI 的多模态消息格式一条消息里可以同时放图和文字指令const body { model: nano-banana-pro, messages: [{ role: user, content: [ { type: image_url, image_url: { url: 原图URL或data里的base64 } }, { type: text, text: 把背景换成纯白色商品主体、光影和投影保持不变 }, ], }], };关键在文字指令要写清楚改什么和不许动什么。只说换白底模型可能连商品角度一起重画了。二、指令怎么写改图的提示词和从零出图完全是两套写法。经验是一句改动 一句保持需求建议写法换背景把背景换成纯白色商品主体、投影、光泽保持完全不变去文字去掉商品包装上的所有文字材质纹理和高光保持原样换颜色把外壳颜色改成哑光黑形状、结构、logo 位置不变加场景把商品放到浅木色桌面上商品本身和拍摄角度不变保持不变那半句不能省。省了的话模型倾向于整张重构出来的图和原图对不上批量场景下尤其明显。三、可复用的封装async function editImage({ imageUrl, instruction, model nano-banana-pro }) { const r await fetch(https://dashengfenshen.cn/v1/chat/completions, { method: POST, headers: { Authorization: Bearer ${process.env.TTQ_API_KEY}, Content-Type: application/json, }, body: JSON.stringify({ model, messages: [{ role: user, content: [ { type: image_url, image_url: { url: imageUrl } }, { type: text, text: instruction }, ], }], }), signal: AbortSignal.timeout(120_000), }); if (!r.ok) throw new Error(改图失败 HTTP r.status); return r.json(); } // 批量把一组主图统一换成白底 const whiteBg 把背景换成纯白色商品主体、投影、光泽保持完全不变; for (const url of imageUrls) { const out await editImage({ imageUrl: url, instruction: whiteBg }); // ...存结果 }原图怎么传公网可访问的 URL 最省事内网图片就读成 base64 塞 data URL。注意 base64 会让请求体变大批量时留意上传带宽。四、纯换白底别用改图用抠图如果需求就是出白底图别走局部重绘走抠图接口{ model: ttq-cutout, messages: [{ role: user, content: [ { type: image_url, image_url: { url } }, { type: text, text: 抠出商品主体输出白色背景 }, ]}]}抠图是专门做这件事的边缘更干净、结果更稳定不会像重绘那样偶尔把商品细节改掉。局部重绘留给换场景、改颜色、去文字这类真需要重新生成像素的活。五、模型选择模型代码改图表现消耗nano-banana-pro保真度好改动可控改图首选10 积分/次gpt-image-2细节质感强复杂场景重绘按次计费nano-banana2快适合先试指令再换 Pro 出终稿8 积分/次ttq-cutout纯抠图出白底10 积分/次省积分的做法先用 Flash 级把指令调对一句话试几版指令定了再切 Pro 出正式的。六、小结局部重绘的三个要点原图和指令放同一条消息里、指令必须带保持不变那半句、纯换白底走抠图接口而不是重绘。甜甜圈APIdashengfenshen.cn一个接口同时提供生图、改图、抠图和生视频模型全nano banana pro、gpt-image-2、Veo 3.1、Sora 2、价格便宜、并发高、出图快、稳定。文档地址https://dashengfenshen.cn 。