From 30a1963bea67d8af40450ae724b31f27ac6a4de4 Mon Sep 17 00:00:00 2001 From: Hoelee Date: Fri, 11 Sep 2026 12:19:16 +0800 Subject: [PATCH] Add case study: AI furniture compositing with FLUX.1 Kontext (en + zh) --- ...urniture-compositing-with-flux-kontext.png | Bin 0 -> 62377 bytes ...urniture-compositing-with-flux-kontext.png | Bin 0 -> 44811 bytes scripts/banner-gen/generate.mjs | 17 ++ scripts/og-gen/generate.mjs | 5 + ...furniture-compositing-with-flux-kontext.md | 262 ++++++++++++++++++ ...furniture-compositing-with-flux-kontext.md | 178 ++++++++++++ 6 files changed, 462 insertions(+) create mode 100644 public/banners/ai-furniture-compositing-with-flux-kontext.png create mode 100644 public/og/ai-furniture-compositing-with-flux-kontext.png create mode 100644 src/content/posts/ai-furniture-compositing-with-flux-kontext.md create mode 100644 src/content/posts/zh/ai-furniture-compositing-with-flux-kontext.md diff --git a/public/banners/ai-furniture-compositing-with-flux-kontext.png b/public/banners/ai-furniture-compositing-with-flux-kontext.png new file mode 100644 index 0000000000000000000000000000000000000000..1151d473ac344ea458f37c2e5400b62e2f186244 GIT binary patch literal 62377 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 z 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 O-NfMhnKC`X&Hn-EZ{r65 literal 0 HcmV?d00001 diff --git a/public/og/ai-furniture-compositing-with-flux-kontext.png b/public/og/ai-furniture-compositing-with-flux-kontext.png new file mode 100644 index 0000000000000000000000000000000000000000..46c45bae44d6b525f3395da570b5223dd64a869e GIT binary patch literal 44811 zcmeFYRZv__^e;*bCs>f+0fJj_Cj<=%5Zo<;Yj7DPSa5d_E`z&kaJRu726qM@I79ON zt8U$@d+R=&hx>4LQN^a|-MxDC>LtImI_R666b330Dgpum#%F19MFfPG

DRosgfy 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 literal 0 HcmV?d00001 diff --git a/scripts/banner-gen/generate.mjs b/scripts/banner-gen/generate.mjs index ec28c41..8f7e1a9 100644 --- a/scripts/banner-gen/generate.mjs +++ b/scripts/banner-gen/generate.mjs @@ -267,6 +267,23 @@ const BANNERS = { { n: '5', label: 'verify ✓' }, ], }, + + 'ai-furniture-compositing-with-flux-kontext': { + titlebar: 'client — furniture compositing PoC', + lines: [ + { t: 'prompt', text: '$' }, { t: 'cmd', text: 'POST fal-ai/flux-pro/kontext/multi · 2 photos in' }, + { t: 'err', text: 'toDataURL: tainted canvas · may not be exported' }, + { t: 'prompt', text: '$' }, { t: 'cmd', text: 'fix = same-origin paths · enhance_prompt:false · name objects' }, + { t: 'prompt', text: '' }, { t: 'ok', text: '→ 1 staged room out ✓ ($0.04, ~17s)' }, + ], + flow: [ + { n: '1', label: '2 photos in' }, + { n: '2', label: 'tainted canvas', err: true }, + { n: '3', label: 'same-origin fix' }, + { n: '4', label: 'prompt anchoring' }, + { n: '5', label: '1 room out ✓' }, + ], + }, }; const DEFAULT_BANNER = { diff --git a/scripts/og-gen/generate.mjs b/scripts/og-gen/generate.mjs index cfb2584..81c8f4d 100644 --- a/scripts/og-gen/generate.mjs +++ b/scripts/og-gen/generate.mjs @@ -93,6 +93,11 @@ const TERMINALS = {

$git pull --ff-only origin main
 refusing: local divergence · never --force
$diff -rq live skills · merge on conflict→ synced ✓
`, + + 'ai-furniture-compositing-with-flux-kontext': ` +
$fetch fal-ai/flux-pro/kontext/multi · 2 photos in
+
 toDataURL: tainted canvas · may not be exported
+
$enhance_prompt:false · same-origin paths→ 1 room out ✓
`, }; const DEFAULT_TERMINAL = ` diff --git a/src/content/posts/ai-furniture-compositing-with-flux-kontext.md b/src/content/posts/ai-furniture-compositing-with-flux-kontext.md new file mode 100644 index 0000000..1a75e1c --- /dev/null +++ b/src/content/posts/ai-furniture-compositing-with-flux-kontext.md @@ -0,0 +1,262 @@ +--- +title: "How I Built an AI Furniture Compositing Demo With FLUX.1 Kontext" +description: "Compositing furniture photos into styled room scenes with fal.ai FLUX.1 Kontext — the multi-image endpoint, the tainted-canvas fix, and why prompt enhancement had to go." +pubDate: 2026-09-11 +category: case-studies +tags: [fal-ai, flux, ai-image, javascript, canvas, ecommerce] +ogImage: /og/ai-furniture-compositing-with-flux-kontext.png +banner: /banners/ai-furniture-compositing-with-flux-kontext.png +--- + +A furniture client came to me with a problem that every small e-commerce seller +eventually hits: their catalogue photos are **isolated product shots** — a +table on white, a chair on white — but customers don't buy furniture from a +white void. They buy the *room*. Staging a real photoshoot for every product, +in every interior style, is out of the question for a one-person business. + +The ask: take two product photos (a dining table, a chair) and place them +together into a believable, high-end interior scene — generated, not +photographed. This post is the story of the proof-of-concept I built to prove +that's possible, the model I chose, and the three bugs that tried to eat it. + +## Why FLUX.1 Kontext — and the endpoint that matters + +The obvious first instinct is a general text-to-image model: *"a dining table +and a chair in a modern living room."* That fails the moment the client says +*"no — MY table, MY chair, the exact one on my product page."* Generating a +lookalike product is worthless; the whole point is to keep the **real product +unchanged** and only change the room around it. + +That's the specific problem **FLUX.1 Kontext** (via [fal.ai](https://fal.ai)) +is built for: image-conditioned generation, where the reference image *anchors* +the product and the prompt describes the scene. But there's a subtlety that cost +me an afternoon: there are **two** endpoints. + +| Endpoint | Reference input | Use case | +|---|---|---| +| `fal-ai/flux-pro/kontext` | `image_url` (single) | edit / re-context one image | +| `fal-ai/flux-pro/kontext/multi` | `image_urls` (array) | **combine multiple reference images** | + +I needed to *fuse two separate products into one scene*, so plain `kontext` +wasn't enough — it only takes one reference image. The `multi` variant accepts +an array of reference images and is what makes "table + chair → one room" +possible. It's flagged experimental, but it's the only game in town for this. + +## Calling fal.ai from a plain HTML file — no SDK, no server + +For a proof-of-concept I didn't want to stand up a backend. fal.ai exposes a +plain REST queue API, so a single `index.html` with vanilla JavaScript can do +the whole job. There are three steps, not one: + +```js +// 1. Submit — returns request_id + polling URLs +const submit = await fetch( + "https://queue.fal.run/fal-ai/flux-pro/kontext/multi", + { + method: "POST", + headers: { + Authorization: "Key " + FAL_KEY, + "Content-Type": "application/json", + }, + body: JSON.stringify({ + prompt: "...", + image_urls: [tableDataUrl, chairDataUrl], + enhance_prompt: false, + }), + } +); +const { request_id, status_url, response_url } = await submit.json(); + +// 2. Poll status until COMPLETED (takes ~5–30s) +let status; +do { + await new Promise((r) => setTimeout(r, 2000)); + status = (await (await fetch(status_url, { + headers: { Authorization: "Key " + FAL_KEY }, + })).json()).status; +} while (status === "IN_QUEUE" || status === "IN_PROGRESS"); + +// 3. Fetch the result +const result = await (await fetch(response_url, { + headers: { Authorization: "Key " + FAL_KEY }, +})).json(); +// result.images[0].url is the generated image +``` + +Two things I verified early, because they make or break the "single file" +approach: + +1. **CORS is open.** `queue.fal.run` returns a permissive + `access-control-allow-origin` and allows the `authorization` header, so a + browser can call it directly with no proxy. I confirmed this with a + preflight before writing any UI. +2. **Local images go in as base64 data URIs.** fal.ai accepts `data:` URIs in + `image_urls`, so I never had to upload the client's photos to a storage + bucket first — the demo reads a file, compresses it, and ships it straight + in the request body. + +## The canvas compression layer + +Phone photos are 5–10 MB. Two of those, base64-encoded, bloats the request to +unusable size and slows generation. So before submitting, the demo runs each +image through a `` to resize and re-encode it: + +```js +async function imgToDataURI(file, maxSize = 1024, quality = 0.85) { + const img = await createImageBitmap(file); // or new Image() + const scale = Math.min(1, maxSize / Math.max(img.width, img.height)); + const c = document.createElement("canvas"); + c.width = Math.round(img.width * scale); + c.height = Math.round(img.height * scale); + c.getContext("2d").drawImage(img, 0, 0, c.width, c.height); + return c.toDataURL("image/jpeg", quality); // ~200–400 KB each +} +``` + +A 7 MB phone shot becomes a ~300 KB JPEG. Fast to upload, fast for the model to +process. + +## Bug #1 — "Tainted canvases may not be exported" + +The demo worked in my head. Then it didn't work in a browser. The moment I hit +"generate" I got: + +> `Failed to execute 'toDataURL' on 'HTMLCanvasElement': Tainted canvases may not be exported.` + +This is a browser security boundary, not a fal.ai problem. When you open the +page over `file://` and load a *local* image with ``, +that image is an **opaque origin**. The moment it's drawn onto a canvas, the +canvas becomes *tainted*, and `toDataURL()` refuses to export it — the browser +won't let a webpage read back the pixels of a file it can't prove it's allowed +to read. + +Two fixes, and I used both at different points: + +1. **Inline the default images as base64 data URIs** directly in the HTML + source. Data URIs don't taint the canvas, so the demo works even when + double-clicked from disk. +2. **Serve over HTTP with same-origin relative paths** (`src="chair.jpg"`). + Once the page and images share an origin, the canvas stays clean. This is + the right answer for the real deployment — the demo now lives at a URL, not + a double-clicked file. + +The general rule: **`toDataURL` fails the instant any opaque-origin image touches +the canvas.** If you're loading local files, either inline them or serve over +HTTP. There is no third way without changing browser security settings. + +## Bug #2 — the API key is in the HTML + +For a demo this is tolerable; for anything public it's a hole. A `Key` header in +a client-side `fetch` means the key is in the page source, readable by anyone +who presses F12. Fine for a PoC I hand to a client, unacceptable for production. + +The plan for the real WordPress plugin (the next phase) is to move the key to +**server-side PHP**: the plugin's endpoint does the authenticated fal.ai call +and returns the image, while the browser only talks to the plugin's own route. +The demo proved the pipeline works; the plugin will put the secret where +secrets belong. + +## Bug #3 — the output looked like "the second image" + +This was the one that made me question whether `multi` even worked. I swapped in +a new table photo, generated, and the result looked almost identical to the +chair reference — as if the model had just ignored the table and copied the +chair. + +Before blaming the model, I checked something falsifiable: **is `multi` even +compositing, or just echoing one input?** I compared the generated image +against both source images with a perceptual hash and mean pixel difference: + +| Comparison | Mean pixel diff (0 = identical) | dHash distance | +|---|---|---| +| result vs table | 55.7 | 31 | +| result vs chair | 55.3 | 29 | +| table vs chair | 69.3 | 30 | + +The result was *far* from both inputs — the endpoint genuinely composites a new +scene, not a copy. So the "looks like the chair" problem wasn't the API; it was +the **inputs and the prompt**. + +Three compounding causes: + +1. **The reference photos were inconsistent.** The original `chair.jpg` was a + photo of a full table-and-chair *scene*, not a clean single chair — so the + model already saw "table + chair" satisfied by one image and leaned on it. +2. **Positional prompting is unreliable.** Kontext matches images by *content*, + not array order. Saying "the first image" / "the second image" doesn't + reliably map to "the table" / "the chair". The fix is to name the objects — + *"the dining table"* and *"the chair"* — and let the model match them to the + right reference. +3. **Prompt enhancement was on.** fal.ai's `enhance_prompt` (default off, but I + had it in mind) rewrites your prompt into a richer aesthetic description — + exactly wrong when the goal is *"do not reinterpret the product."* I pinned + it to `false` so the model obeys the literal prompt instead of embellishing + it. + +## The prompt that finally worked + +The client's core requirement was strict: **preserve the furniture exactly** and +only invent the room. That needs a prompt that spends most of its length +*preventing* reinterpretation, not describing style: + +> Create a photorealistic interior photograph using the exact dining table and +> exact chair from the reference images. Preserve both furniture pieces exactly +> as shown — do not redesign, recolor, repaint, restyle, replace, or reinterpret +> either product. Keep their original geometry, proportions, construction, +> material, finish, texture, and color exactly unchanged. +> +> Place the chair naturally beside the dining table in a realistic dining +> position, slightly pulled under the table and properly aligned with it. +> Maintain realistic scale, perspective, and physical contact with the floor. +> The chair and table must look photographed together in the same real room, +> with natural contact shadows — not composited or pasted together. +> +> Preserve the true original color. Do not allow the room lighting, wall or +> floor colors, or grading to alter the furniture. +> +> Set the scene in a spacious modern living room with floor-to-ceiling windows +> and subtle warm afternoon daylight. Use restrained, neutral interior colors. +> +> Photorealistic commercial furniture photography, realistic camera +> perspective, natural proportions, high detail. + +The demo ships six of these, one per scene style (modern living room, cozy +dining room, Scandinavian, wabi-sabi, and a clean studio), each differing only +in the "set the scene" paragraph. + +## The result + +One `index.html`, no backend, no SDK — two product photos in, a staged room +out, at **$0.04 per image** and roughly 15–20 seconds of generation. The client +now has a working preview they can show *their* customers, with a scene selector +and an editable prompt, before committing to the full WordPress plugin. + +The proof-of-concept answered the question it was built to answer: **yes, you +can keep the real product and only generate the room around it** — as long as +you respect the three constraints that actually matter: a clean reference image +per product, object-named (not positional) prompts, and `enhance_prompt: false`. + +## What I'd do differently + +- **Require clean, single-product reference images on day one.** Every failure + mode downstream — the "looks like one image" problem, the proportion drift — + traces back to inconsistent source photos. I'd ship a tiny client-facing + guide ("one product per photo, plain background, no other furniture") before + touching any model. +- **Turn `enhance_prompt` off explicitly, first.** I lost a generation to the + enhancement rewriting my careful "do not reinterpret" instructions into + exactly the opposite. +- **Validate CORS with a real preflight before building UI.** It's a two-line + `curl` and it de-risks the entire architecture decision. + +--- + +## Want this for your product catalogue? + +I build AI image pipelines, WordPress plugins, and self-hosted infrastructure +for e-commerce businesses. If you want to stage your products in styled room +scenes — or hire me for a similar AI integration — I'd love to talk: + +- 📱 **WhatsApp:** [+60 12-797 2969](https://wa.me/60127972969) +- 📧 **Email:** [me@hoelee.com](mailto:me@hoelee.com?subject=AI%20product%20image%20compositing) +- 🌐 **Website:** [hoelee.com](https://hoelee.com) diff --git a/src/content/posts/zh/ai-furniture-compositing-with-flux-kontext.md b/src/content/posts/zh/ai-furniture-compositing-with-flux-kontext.md new file mode 100644 index 0000000..52b7dcc --- /dev/null +++ b/src/content/posts/zh/ai-furniture-compositing-with-flux-kontext.md @@ -0,0 +1,178 @@ +--- +title: "我如何用 FLUX.1 Kontext 打造 AI 家具合成演示" +description: "用 fal.ai FLUX.1 Kontext 把家具产品照合成到风格化房间场景——多图端点、tainted canvas 的修复,以及为什么必须关掉 prompt enhancement。" +pubDate: 2026-09-11 +category: case-studies +tags: [fal-ai, flux, ai-image, javascript, canvas, ecommerce] +ogImage: /og/ai-furniture-compositing-with-flux-kontext.png +banner: /banners/ai-furniture-compositing-with-flux-kontext.png +--- + +一位家具客户带着一个每个小电商卖家最终都会撞上的问题来找我:他们的产品图都是**孤立的产品照**——一张白底桌子、一张白底椅子——但顾客不会从一片白茫茫的虚无里买家具,他们买的是*房间*。给每个产品、每种室内风格都拍一次实体棚拍,对一个人的生意来说根本不可能。 + +需求是:拿两张产品照(一张餐桌、一把椅子),把它们一起放进一个可信的、高级感的室内场景——生成出来的,而不是拍出来的。这篇文章讲的就是我为验证这件事可行而做的概念验证:我选的模型,以及三个差点把它搞砸的 bug。 + +## 为什么选 FLUX.1 Kontext——以及那个关键的端点 + +第一反应自然是通用文生图模型:*「一张餐桌和一把椅子放在现代客厅里」*。可当客户说*「不——是我的桌子、我的椅子,就是我产品页上那一款」*时,这个思路就崩了。生成一个相似品毫无价值;重点是要让**真实产品原封不动**,只改变它周围的房间。 + +这正是 **FLUX.1 Kontext**(通过 [fal.ai](https://fal.ai))专门解决的问题:以图生图,参考图*锚定*产品,提示词描述场景。但有个坑让我耗掉一个下午:这里有**两个**端点。 + +| 端点 | 参考图输入 | 用途 | +|---|---|---| +| `fal-ai/flux-pro/kontext` | `image_url`(单张) | 编辑 / 重新语境化一张图 | +| `fal-ai/flux-pro/kontext/multi` | `image_urls`(数组) | **合并多张参考图** | + +我需要把*两个独立产品融合进一个场景*,所以普通 `kontext` 不够——它只吃一张参考图。`multi` 变体接受参考图数组,这才是「桌子 + 椅子 → 一个房间」能成立的关键。它被标记为实验版,但这件事上它是唯一的选择。 + +## 用一个纯 HTML 文件调用 fal.ai——不用 SDK,不用服务器 + +做概念验证我不想搭后端。fal.ai 暴露了一个纯 REST 队列 API,所以一个 `index.html` 配 vanilla JavaScript 就能搞定全部。但这是三步,不是一步: + +```js +// 1. 提交——返回 request_id + 轮询 URL +const submit = await fetch( + "https://queue.fal.run/fal-ai/flux-pro/kontext/multi", + { + method: "POST", + headers: { + Authorization: "Key " + FAL_KEY, + "Content-Type": "application/json", + }, + body: JSON.stringify({ + prompt: "...", + image_urls: [tableDataUrl, chairDataUrl], + enhance_prompt: false, + }), + } +); +const { request_id, status_url, response_url } = await submit.json(); + +// 2. 轮询状态直到 COMPLETED(约 5–30 秒) +let status; +do { + await new Promise((r) => setTimeout(r, 2000)); + status = (await (await fetch(status_url, { + headers: { Authorization: "Key " + FAL_KEY }, + })).json()).status; +} while (status === "IN_QUEUE" || status === "IN_PROGRESS"); + +// 3. 取结果 +const result = await (await fetch(response_url, { + headers: { Authorization: "Key " + FAL_KEY }, +})).json(); +// result.images[0].url 就是生成的图片 +``` + +有两件事我很早就验证了,因为它们决定了「单文件」方案成不成立: + +1. **CORS 是开放的。** `queue.fal.run` 返回宽松的 `access-control-allow-origin`,并允许 `authorization` 头,所以浏览器可以直接调用,无需代理。我在写任何 UI 之前就用 preflight 确认了这一点。 +2. **本地图以 base64 data URI 传入。** fal.ai 的 `image_urls` 接受 `data:` URI,所以我根本不需要先把客户的照片传到存储桶——demo 直接读文件、压缩,然后塞进请求体。 + +## Canvas 压缩层 + +手机照片有 5–10 MB。两张这样、再 base64 编码,请求体会膨胀到无法使用,生成也会变慢。所以提交前,demo 会把每张图过一遍 `` 来缩放并重新编码: + +```js +async function imgToDataURI(file, maxSize = 1024, quality = 0.85) { + const img = await createImageBitmap(file); // 或 new Image() + const scale = Math.min(1, maxSize / Math.max(img.width, img.height)); + const c = document.createElement("canvas"); + c.width = Math.round(img.width * scale); + c.height = Math.round(img.height * scale); + c.getContext("2d").drawImage(img, 0, 0, c.width, c.height); + return c.toDataURL("image/jpeg", quality); // 每张约 200–400 KB +} +``` + +一张 7 MB 的手机照变成约 300 KB 的 JPEG。上传快,模型处理也快。 + +## Bug #1 ——「Tainted canvases may not be exported」 + +demo 在我脑子里能跑,在浏览器里却不行。我一点「生成」就收到: + +> `Failed to execute 'toDataURL' on 'HTMLCanvasElement': Tainted canvases may not be exported.` + +这是浏览器的安全边界,不是 fal.ai 的问题。当你用 `file://` 打开页面、并用 `` 加载一张*本地*图片时,那张图属于**不透明源**。它一被画到 canvas 上,canvas 就变成 *tainted*,`toDataURL()` 拒绝导出——浏览器不会让网页读回一张它无法证明有权读取的文件的像素。 + +有两个修复,我在不同阶段都用过: + +1. **把默认图以 base64 data URI 内嵌进 HTML 源码。** data URI 不会污染 canvas,所以即使从磁盘双击打开也能跑。 +2. **走 HTTP、用同源相对路径**(`src="chair.jpg"`)。一旦页面和图片同源,canvas 就保持干净。这是真实部署的正确答案——demo 现在跑在一个 URL 上,而不是双击打开的文件。 + +通用规则:**只要任何不透明源的图片碰到 canvas,`toDataURL` 立刻报错。** 如果你要加载本地文件,要么内嵌,要么走 HTTP。不改浏览器安全设置,没有第三条路。 + +## Bug #2 —— API key 就在 HTML 里 + +对 demo 来说这可以容忍;对任何公开的东西来说这是个洞。客户端 `fetch` 里的 `Key` 头意味着 key 就在页面源码里,任何人按 F12 就能读到。给我交给客户的概念验证没问题,上生产就不可接受。 + +真正 WordPress 插件(下一阶段)的计划是把 key 挪到**服务端 PHP**:插件的端点去做带鉴权的 fal.ai 调用并返回图片,浏览器只跟插件自己的路由对话。demo 证明了管线能跑通;插件会把秘密放回秘密该待的地方。 + +## Bug #3 —— 输出看起来「像第二张图」 + +这是让我怀疑 `multi` 到底能不能用的那个。我换了一张新桌子图、生成,结果看起来跟椅子参考图几乎一模一样——好像模型直接忽略了桌子、复制了椅子。 + +在怪模型之前,我先查了一件可证伪的事:**`multi` 到底是在合成,还是只是在回显某一张输入?** 我用感知哈希和平均像素差对比了生成图和两张源图: + +| 对比 | 平均像素差(0 = 相同) | dHash 距离 | +|---|---|---| +| 结果 vs 桌子 | 55.7 | 31 | +| 结果 vs 椅子 | 55.3 | 29 | +| 桌子 vs 椅子 | 69.3 | 30 | + +结果离两张输入都*很远*——端点是真在合成新场景,不是复制。所以「像椅子」的问题不在 API,而在**输入和提示词**。 + +三个叠加的原因: + +1. **参考图不一致。** 最初的 `chair.jpg` 是一张完整的「桌+椅」*场景*照,不是干净的单椅——于是模型看到一张图就已经满足「桌+椅同框」,就倾向照着它来。 +2. **按位置指代不可靠。** Kontext 按图片*内容*匹配,而不是数组顺序。说「第一张图」/「第二张图」并不能可靠地映射到「桌子」/「椅子」。修复是直接*命名物体*——*「the dining table」*和*「the chair」*——让模型自己去匹配正确的参考图。 +3. **prompt enhancement 开着。** fal.ai 的 `enhance_prompt`(默认关,但我一直惦记着它)会把你的提示词改写成更丰富的审美描述——当目标是*「别重新解读产品」*时,这正好帮倒忙。我把它钉死为 `false`,让模型遵守字面提示词,而不是添油加醋。 + +## 最终起作用的提示词 + +客户的核心要求很严格:**原样保留家具**,只去发明房间。这需要一段把大部分篇幅花在*阻止*重新解读、而不是描述风格上的提示词: + +> Create a photorealistic interior photograph using the exact dining table and +> exact chair from the reference images. Preserve both furniture pieces exactly +> as shown — do not redesign, recolor, repaint, restyle, replace, or reinterpret +> either product. Keep their original geometry, proportions, construction, +> material, finish, texture, and color exactly unchanged. +> +> Place the chair naturally beside the dining table in a realistic dining +> position, slightly pulled under the table and properly aligned with it. +> Maintain realistic scale, perspective, and physical contact with the floor. +> The chair and table must look photographed together in the same real room, +> with natural contact shadows — not composited or pasted together. +> +> Preserve the true original color. Do not allow the room lighting, wall or +> floor colors, or grading to alter the furniture. +> +> Set the scene in a spacious modern living room with floor-to-ceiling windows +> and subtle warm afternoon daylight. Use restrained, neutral interior colors. +> +> Photorealistic commercial furniture photography, realistic camera +> perspective, natural proportions, high detail. + +demo 里内置了六段这样的提示词,每种场景风格一段(现代客厅、温馨餐厅、北欧风、侘寂风、以及干净的影棚),每一段只改「set the scene」那一节。 + +## 结果 + +一个 `index.html`,没有后端、没有 SDK——两张产品照进,一个布置好的房间出,**每张图 $0.04**,生成约 15–20 秒。客户现在有了一个能拿给*他们*顾客看的可用预览,带场景选择器和可编辑提示词,然后再决定是否投入完整的 WordPress 插件。 + +这个概念验证回答了一个它生来就要回答的问题:**是的,你可以保留真实产品、只生成它周围的房间**——只要你尊重那三条真正要紧的约束:每个产品一张干净的参考图、按物体命名(而非按位置)的提示词、以及 `enhance_prompt: false`。 + +## 我会做不同的地方 + +- **第一天就要求干净的单品参考图。** 下游的每一种失败模式——「像某一张图」的问题、比例漂移——都能追溯到不一致的源照片。我会在碰任何模型之前,先发一份给客户的简短说明(「每张照片一个产品、纯色背景、没有其他家具」)。 +- **先显式关掉 `enhance_prompt`。** 我浪费了一次生成,就因为 enhancement 把我精心写的「别重新解读」改写成恰恰相反的东西。 +- **在写 UI 之前先用真实 preflight 验证 CORS。** 两行 `curl` 的事,却能给整个架构决策祛除风险。 + +--- + +## 想为你的产品目录做这个吗? + +我为电商企业构建 AI 图像管线、WordPress 插件,以及自托管基础设施。如果你想把产品摆进风格化的房间场景——或者想雇我做类似的 AI 集成——我非常乐意交流: + +- 📱 **WhatsApp:** [+60 12-797 2969](https://wa.me/60127972969) +- 📧 **邮箱:** [me@hoelee.com](mailto:me@hoelee.com?subject=AI%20product%20image%20compositing) +- 🌐 **网站:** [hoelee.com](https://hoelee.com)