Claude Skill

fabric-on-body

一键替换服装面料。版式图 + 面料图 → 换上新面料的样衣图,垂坠与光泽随材质变。当用户说「换面料」「换材质」「试布料」「面料上身」「同款不同料」时使用。

LLM Mart · 0 points · 0 views 0 listing impressions 0 install-command copies
Virus-scanned Reviewed automatically before listing.

Full trust report

Download dlazy-ai-ecommerce-skills-skills_fabric-on-body-c022f20.zip · 23 KB
Part of dlazy-ai/ecommerce-skills — 26 skills

Install

skills CLI npx skills add https://github.com/dlazy-ai/ecommerce-skills/tree/main/skills/fabric-on-body
Claude Code claude plugin marketplace add https://llmmart.ai/marketplace.json && claude plugin install dlazy-ai-ecommerce-skills@llmmart
Git git clone https://github.com/dlazy-ai/ecommerce-skills.git

The skills CLI installs just this skill, for any of its supported agents. Claude Code installs the whole dlazy-ai/ecommerce-skills collection as a plugin from our marketplace. Git is the plain clone.

Skill manifest

fabric-on-body — 一键替换服装面料

版型不动,面料换掉。给一张服装版式图 + 一张面料小样,输出这个版型用新面料做出来的样衣效果图。

价值在打样前:一个版型试 8 种面料,传统做法是打 8 件样衣(每件几天、几百块);这里是 8 次生成。


生成效果示例

输入:服装版式图 输入:面料图
style-sheet.jpg — 落肩宽松圆领毛衣版型,800×800 fabric-swatch.jpg — 象牙白真丝缎面小样,640×640

实际执行的命令:

dlazy gpt-image-2 \
  --prompt 'Fabric replacement for a garment style sheet. Image 1 is the garment pattern/style reference: an oversized drop-shoulder crewneck sweater with ribbed collar, cuffs and hem. Image 2 is the target fabric: ivory silk satin with a soft lustrous sheen and fine weave. Re-render the exact same garment silhouette from image 1 in the fabric from image 2. Keep the pattern identical: same oversized drop-shoulder cut, same body length, same sleeve length, same collar/cuff/hem construction, same flat-lay layout and camera angle. Replace only the material — the sweater must now read as ivory silk satin with specular highlights on the folds and soft drape instead of chunky knit. Clean white background, even studio light, no text.' \
  --images docs/fabric-on-body/style-sheet.jpg docs/fabric-on-body/fabric-swatch.jpg \
  --size 1024x1024 --quality medium --imageFormat jpeg \
  --save docs/fabric-on-body/example-output.jpg

输出

example-output.jpg — 1024×1024。落肩剪裁、身长袖长、罗纹领口袖口下摆的结构与平铺角度都与版式图一致;材质从粗针织变成象牙白真丝缎面,褶皱上出现高光、垂坠变得柔顺,罗纹部位仍以缎面质感保留。


1、能力边界

输入 说明
服装版式图 决定版型、剪裁、结构与拍摄角度
面料图 决定材质、纹理、光泽与垂坠感(面料小样特写最佳)
服装类型 帮助模型理解结构(上装 / 下装 / 连衣裙 / 外套 / 内衣)
保持不变 会改变
版型与剪裁、身长袖长、领口/袖口/下摆结构、缝线位置、拍摄角度与构图 材质与织法、表面光泽、垂坠与褶皱形态、厚度观感

不做:不改版型比例;不改变服装的结构设计;不承诺真实打样的手感与克重——输出是视觉预览,不是工艺样衣。


2、输入素材规则

生成前先自检这几条硬性约束:

  • 大小:20KB ~ 15MB
  • 分辨率:大于 400×400
  • 格式:jpg / jpeg / png / webp

版式图(✅):纯色背景、结构清晰、正面完整的平铺图或人台图。

面料图(✅):面料小样特写,能看清织纹与光泽;有褶皱转折更好(能交代垂坠)。

会明显拉低效果的输入(❌)

问题 说明
面料图拍太远 看不清织纹,只会当成一块纯色
面料图带强环境色 黄光下拍的白布会换成米黄色
版式图有复杂印花 原印花会和新面料打架,先用 item-repair 或换素图
面料与品类不匹配 硬挺牛仔布做不出吊带裙的垂坠,模型会硬凑

3、面料替换的关键:写清「材质带来的物理变化」

只说「换成真丝」不够——模型不知道该怎么改光影。要把材质翻译成可画出来的物理特征:

面料 要写的物理特征
真丝 / 缎面 lustrous specular highlights along the folds, fluid drape, soft continuous gradients
粗针织 chunky knit loops with visible yarn twist, matte fibre halo, structured heavy drape
牛仔 twill diagonal weave, slight slub texture, stiff drape with sharp fold creases
灯芯绒 vertical wale ridges catching light, matte pile, medium-stiff drape
雪纺 semi-sheer, very light drape with many fine ripples, soft diffused light through the fabric
皮革 low-frequency specular sheen, grain texture, stiff drape with broad soft creases
摇粒绒 dense short pile, fuzzy silhouette edge, no specular highlight

再加一句「版型不许动」——这是本技能最容易失守的地方:

Keep the pattern identical: same cut, same body length, same sleeve length,
same collar/cuff/hem construction, same flat-lay layout and camera angle.
Replace only the material.

4、工具调用

本技能使用 dLazy 的 gpt-image-2(图像编辑模型;面料替换要求「几何完全不动、材质完全改变」,是典型的定向属性替换任务)。

调用方式

两种等价写法,选一种。统一入口会自动选后端、失败重试、建目录落盘、估算成本:

# A. 统一入口(推荐):可切任意后端,加 --dry-run 不计费空跑
node scripts/gen.mjs --task fabric-on-body \
  --prompt '<见下方 Prompt 模板>' \
  --images <按下表顺序> \
  --save output/fabric-on-body-<sku>.jpg

# B. 直接用 dLazy CLI(不想引入 Node 依赖时,效果等价)
dlazy gpt-image-2 --prompt '...' --images ... --save output/fabric-on-body.jpg

参数约定(本技能固定用法)

参数 取值 理由
--images [版式图, 面料图] 顺序即 prompt 中的 image 1 / 2
--size 与版式图比例一致(1024x1024 平铺 / 1024x1536 人台竖版) 换料不该改构图
--quality high 材质是本技能的唯一产出,必须 high
--imageFormat jpeg 通用格式
--batch 2 ~ 3 垂坠形态有随机性
--save docs/fabric-on-body/output-<版型>-<面料>.jpg 版型 × 面料矩阵命名

Command Examples

# basic call: 一个版型换一种面料
dlazy gpt-image-2 \
  --prompt 'Fabric replacement. Image 1 is the garment pattern reference, image 2 is the target fabric. Re-render the exact same garment silhouette from image 1 in the fabric from image 2. Keep the pattern identical: same cut, body length, sleeve length, collar/cuff/hem construction, layout and camera angle. Replace only the material. Clean white background, even studio light, no text.' \
  --images docs/fabric-on-body/style-sheet.jpg docs/fabric-on-body/fabric-swatch.jpg \
  --size 1024x1024 --quality high

# complex call: 一个版型 × 多种面料,跑成一个选型矩阵
STYLE=docs/fabric-on-body/style-sheet.jpg
KEEP='Keep the pattern identical: same oversized drop-shoulder cut, same body length, same sleeve length, same collar/cuff/hem construction, same flat-lay layout and camera angle. Replace only the material.'
for F in satin corduroy denim fleece; do
  case $F in
    satin)    PHYS='lustrous specular highlights along the folds, fluid drape, soft continuous gradients' ;;
    corduroy) PHYS='vertical wale ridges catching light, matte pile, medium-stiff drape' ;;
    denim)    PHYS='twill diagonal weave, slight slub texture, stiff drape with sharp fold creases' ;;
    fleece)   PHYS='dense short pile, fuzzy silhouette edge, no specular highlight' ;;
  esac
  dlazy gpt-image-2 \
    --prompt "Fabric replacement for a garment style sheet. Image 1 is the garment pattern/style reference. Image 2 is the target fabric. Re-render the exact same garment silhouette from image 1 in the fabric from image 2. $KEEP The garment must now read as $F: $PHYS. Clean white background, even studio light, no text." \
    --images "$STYLE" "docs/fabric-on-body/swatch-$F.jpg" \
    --size 1024x1024 --quality high --imageFormat jpeg \
    --save "docs/fabric-on-body/output-drop-shoulder-$F.jpg"
done

# 先估价不真跑
dlazy gpt-image-2 --dry-run --prompt '...' --images a.jpg b.jpg --size 1024x1024 --quality high

延伸阅读

要查什么 去哪
认证、多后端配置、输出结构、错误码 references/provider-cli.md
gpt-image-2 的全部可用参数 references/model-flags.md
统一入口的全部选项 node scripts/gen.mjs --help

5、Prompt 模板

Fabric replacement for a garment style sheet.
Image 1 is the garment pattern/style reference: [品类 + 版型描述].
Image 2 is the target fabric: [面料名 + 颜色 + 光泽描述].

Re-render the exact same garment silhouette from image 1 in the fabric from image 2.

Keep the pattern identical: same [剪裁], same body length, same sleeve length,
same [领口/袖口/下摆结构], same [缝线位置], same layout and camera angle.

Replace only the material — the garment must now read as [面料名]:
[第三节表格里对应的物理特征].

Clean [背景色] background, even studio light, no text.

按问题追加的修正句

问题 追加到 prompt 末尾
版型跟着变了 The silhouette outline must be pixel-aligned with image 1. Only surface material may differ.
面料颜色偏了 Sample the fabric colour from image 2 under neutral light; do not shift hue or add colour cast.
换完还是原来的质感 把物理特征写得更极端,并追加 The original [原面料] texture must be completely gone.
垂坠不对 Drape stiffness: [very fluid / medium / stiff]. Fold count and fold radius must match a [面料] of about [克重] gsm.
缝线/罗纹消失了 Preserve construction details: [罗纹/明线/拉链] must remain visible in the new material.

6、执行流程

  1. 备素材:版式图(结构清晰、印花越少越好)+ 面料小样特写(能看清织纹)。
  2. 翻译材质:查第三节表格,把面料名换成物理特征描述。
  3. 写版型锁定句:剪裁 / 身长 / 袖长 / 领口袖口下摆 / 缝线 / 角度,逐项写死。
  4. --quality high 起跑,比例跟随版式图。
  5. 要做选型矩阵:用第四节循环,一个版型 × N 种面料。
  6. 质检:版型轮廓是否与原图对齐、面料颜色是否准、质感是否真的换掉了、缝线罗纹是否还在。
  7. 交付时注明这是视觉预览,不代表真实手感与克重。

7、常见问题

现象 原因 处理
版型变了 未锁定轮廓 追加 silhouette outline must be pixel-aligned with image 1
面料颜色不对 面料图带环境色 重拍面料小样(中性光),或追加取色约束句
质感没换掉 物理特征写得太弱 用第三节表格的极端描述 + original texture must be completely gone
垂坠像纸板 未指定垂坠刚度 追加 drape stiffness 句,给出克重参考
罗纹/明线消失 被新材质吞掉 追加保留结构细节句
面料与品类物理上不成立 硬挺布做垂坠款 换匹配的面料,或改版型

Tips

Visit https://dlazy.com for more information.

Files (ecommerce-skills)
  • examples
    • brand.yaml 1.6 KB
      # ⚠️ 由 scripts/build-skills.mjs 从 shared/examples/brand.yaml 同步生成,不要直接改这里。
      # 店铺品牌视觉规范 —— 所有生图技能读这一份,保证几百个 SKU 看起来像同一家店。
      #   node scripts/brand.mjs --brand brand.yaml --for flat-lay
      #   node scripts/gen.mjs --task flat-lay --brand brand.yaml --prompt '...'
      
      brand:
        name: 示例品牌
        # 一句话概括调性,会原样进 prompt
        tone: quiet minimalist, warm and lived-in, never glossy or commercial
      
      model:
        # 锁模特:给一张脸的参考图,所有技能都会把它作为最后一张参考图传入
        reference: assets/model/face-a.jpg
        description: East Asian woman, late twenties, natural makeup, shoulder-length black hair
        body: slim, height around 168cm
      
      photography:
        background: seamless off-white studio backdrop, RGB 248 248 246
        lighting: soft large softbox from camera left, gentle fill, no hard shadows
        camera: 85mm equivalent, eye level, shallow depth of field
        grade: neutral white balance around 5200K, low contrast, slightly lifted blacks
        crop: full body with headroom, product centered
      
      layout:
        # 给带排版的技能(主图 / 详情页)用
        margin: at least 8% empty margin on all sides
        typeface: clean sans-serif, no decorative fonts
        text_color: near-black on light background
      
      forbid:
        - no visible brand logos other than the product's own
        - no text or watermark
        - no exaggerated poses or dramatic wind effects
        - no oversaturated colors
      
      # 可选:把这些直接写进合规目标,生成时就按平台要求出图
      compliance:
        platform: amazon
      
  • references
    • model-flags.md 2.1 KB
      # `gpt-image-2` 参数清单
      
      本技能默认用的模型的完整参数。日常只需要「参数约定」里那几个,
      这份清单在需要用到非常规参数时再看。
      
      **CRITICAL INSTRUCTION FOR AGENT**:
      Run the `dlazy gpt-image-2` command to get results.
      
      ```bash
      dlazy gpt-image-2 -h
      
      Options:
        --prompt <prompt>            Prompt
        --images [images...]         Images [image: url or local path] (max 5)
        --size <size>                Size [default: auto] (choices: "1024x1024",
                                     "1536x1024", "1024x1536", "2048x2048",
                                     "2048x1152", "3840x2160", "2160x3840", "auto")
        --imageFormat <imageFormat>  Image Format [default: jpeg] (choices: "jpeg",
                                     "png", "webp")
        --quality <quality>          Quality [default: medium] (choices: "low",
                                     "medium", "high")
        --dry-run                    Print payload without executing the tool
        --no-wait                    Return generateId immediately for async tasks
        --timeout <seconds>          Max seconds to wait for async completion
                                     (default: "1800")
        --input <jsonOrFile>         Inline JSON or @path/to/file.json — merged under
                                     flag values (flags win)
        --save <path>                Download the result asset to this local path
                                     (mkdir + retry handled for you). A destination
                                     path — NOT a response format; for stdout shape
                                     use --format
        --batch <n>                  Fan-out N parallel runs (cloud tools only)
                                     (default: "1")
        -h, --help                   display help for command
      ```
      
      > Any flag also accepts pipe references — `-` (auto-pick from upstream stdin), `@N` (n-th output), `@N.path` (jsonpath into output), `@*` (all primary values), `@stdin` / `@stdin:path` (whole envelope). See `dlazy --help` for details.
      
      ---
      
      换其他后端时参数由 `scripts/gen.mjs` 统一翻译,见 [`provider-cli.md`](provider-cli.md)。
      
    • provider-cli.md 4.7 KB
      <!-- 由 scripts/build-skills.mjs 从 shared/references/provider-cli.md 同步生成,不要直接改这里。 -->
      # 后端调用参考
      
      技能正文只写「要生成什么」。认证、计费、错误码、输出结构这些每个技能都一样的东西放在这里,
      **用到时再读**,不占技能的常驻上下文。
      
      ---
      
      ## 一、认证
      
      ### 默认后端 dLazy
      
      ```bash
      dlazy login            # 设备码流程,远程 shell 也能用,自动写入本地配置
      dlazy auth set <KEY>   # 已有 key 时直接写入
      ```
      
      key 存在用户配置目录(macOS/Linux `~/.dlazy/config.json`,Windows `%USERPROFILE%\.dlazy\config.json`),
      权限限本机用户。也可以每次调用用环境变量 `DLAZY_API_KEY` 传入。
      
      手动获取:登录 [dlazy.com](https://dlazy.com) → [API Key 页面](https://dlazy.com/dashboard/organization/api-key)。
      key 按组织隔离,可随时轮换或吊销。
      
      ### 其他后端
      
      本技能库不锁定单一厂商。配好任意一家的 key 即可跑:
      
      | 后端 | 环境变量 | 说明 |
      | --- | --- | --- |
      | `dlazy` | `dlazy login` 或 `DLAZY_API_KEY` | 默认,最省事 |
      | `openai` | `OPENAI_API_KEY` | 走 `/v1/images/edits` 与 `/v1/images/generations` |
      | `gemini` | `GEMINI_API_KEY` | Nano Banana 系列 |
      | `fal` | `FAL_KEY` | |
      | `replicate` | `REPLICATE_API_TOKEN` | |
      | `ark` | `ARK_API_KEY` + `ARK_MODEL` | 火山方舟,模型 ID 需按开通情况填 |
      
      选路优先级:`--provider` 参数 > `PROVIDER` 环境变量 > 第一个配了 key 的 > `dlazy`。
      
      ```bash
      node scripts/gen.mjs --doctor     # 看当前哪个后端可用
      ```
      
      各后端的模型 ID 可用 `GEN_MODEL_OPENAI` / `GEN_MODEL_GEMINI` / `GEN_MODEL_FAL` /
      `GEN_MODEL_REPLICATE` / `GEN_MODEL_ARK` 覆盖。**厂商目录会变,以各家最新文档为准。**
      
      ---
      
      ## 二、两种调用方式
      
      ### 方式 A:统一入口(推荐)
      
      ```bash
      node scripts/gen.mjs --task <技能名> --prompt '...' --images a.jpg b.jpg --save out.jpg
      ```
      
      它负责:后端选路、默认尺寸档位、失败重试(429/5xx 指数退避)、落盘建目录、成本估算。
      
      ```bash
      node scripts/gen.mjs --task flat-lay --prompt '...' --dry-run   # 不调用不计费,只看要发什么
      node scripts/gen.mjs --help
      ```
      
      ### 方式 B:直接用 dLazy CLI
      
      不想引入 Node 依赖时,技能正文里的 `dlazy ...` 命令可以原样执行,效果等价。
      
      ```bash
      npx @dlazy/cli@1.2.3 <command>     # 不装全局二进制
      ```
      
      - CLI 源码:[github.com/dlazy-ai/cli](https://github.com/dlazy-ai/cli) · npm 包 `@dlazy/cli`
      
      ---
      
      ## 三、数据流向
      
      调用 dLazy 时:提示词与参数发往 `api.dlazy.com`;传入的本地图片会上传到 `files.dlazy.com`
      供模型读取;产出 URL 同样托管在 `files.dlazy.com`。这是云端生成 API 的通用形态。
      换成其他后端时,数据流向对应厂商,不经过 dLazy。
      
      ---
      
      ## 四、输出结构
      
      `gen.mjs`(加 `--json`):
      
      ```json
      {
        "ok": true,
        "task": "flat-lay",
        "provider": "dlazy",
        "model": "gpt-image-2",
        "files": ["docs/flat-lay/output-sku001.jpg"],
        "texts": [],
        "estimatedCredits": 60,
        "elapsedMs": 58213
      }
      ```
      
      dLazy CLI 原生:
      
      ```json
      {
        "ok": true,
        "result": {
          "tool": "gpt-image-2",
          "data": { "urls": ["https://files.dlazy.com/data/ai/....jpg"] },
          "savedPath": "docs/flat-lay/example-output.jpg"
        }
      }
      ```
      
      加 `--no-wait` 的异步任务不返回 `data`,返回 `task: { generateId, status }`,
      用 `dlazy status <generateId> --wait` 轮询。
      
      文本类模型(如质检)产出在 `result.data.texts[0]`:
      
      ```bash
      dlazy claude-sonnet-5 --prompt '...' --images x.jpg \
        | python3 -c 'import sys,json;print(json.load(sys.stdin)["result"]["data"]["texts"][0])'
      ```
      
      ---
      
      ## 五、错误处理
      
      | Code | 类型 | 示例 |
      | --- | --- | --- |
      | 401 | 未授权 / 无 key | `ok: false, code: "unauthorized"` |
      | 501 | 缺必填参数 | `error: required option '--prompt <prompt>' not specified` |
      | 502 | 本地文件读不到 | `Error: Image file not found: ...` |
      | 503 | 余额不足 | `ok: false, code: "insufficient_balance"` |
      | 503 | 服务端错误 | `HTTP status code error (500)` |
      | 504 | 异步任务失败 | `=== Generation Failed ===` / `Prompt violates safety policy` |
      
      **给 Agent 的硬性要求**
      
      1. 命中 `insufficient_balance` → 明确告诉用户算力不足,并给出充值入口
         <https://dlazy.com/dashboard/organization/settings?tab=credits>
      2. 命中 `unauthorized` / 缺 key → 告诉用户去 <https://dlazy.com/dashboard/organization/api-key>
         取 key,用 `dlazy auth set <key>` 存好再继续。
      3. 用 `gen.mjs` 时,429 与 5xx 已自动重试;仍失败才向用户报错。
      4. **不要**为了「跑通」而偷偷降级参数(尺寸、档位、批量),先问用户。
      
  • scripts
    • lib
      • miniyaml.mjs 2.8 KB · in bundle
      • providers.mjs 11.9 KB · in bundle
      • tasks.json 3.1 KB
        {
          "_note": "技能 → 默认模型与参数。dlazy 列为默认后端的模型名;其他后端走 providers.mjs 的通用映射,可用 GEN_MODEL_<PROVIDER> 覆盖。",
          "_credits": { "gpt-image-2": 60, "seedream-5.0": 30, "seedream-5.0-pro": 45, "banana-pro": 25, "claude-sonnet-5": 3 },
          "tasks": {
            "flat-lay":                { "model": "gpt-image-2",      "size": "1024x1536", "quality": "high",   "format": "jpeg" },
            "wear-everything":         { "model": "gpt-image-2",      "size": "1024x1536", "quality": "medium", "format": "jpeg" },
            "image-fusion":            { "model": "seedream-5.0",     "size": "3:4",       "resolution": "2k" },
            "one-shot":                { "model": "gpt-image-2",      "size": "1024x1536", "quality": "medium", "format": "jpeg" },
            "fission-pattern":         { "model": "gpt-image-2",      "size": "1024x1536", "quality": "medium", "format": "jpeg" },
            "item-detail":             { "model": "seedream-5.0-pro", "size": "3:4",       "resolution": "2k" },
            "creative-scene":          { "model": "banana-pro",       "size": "1024x1536", "format": "jpeg" },
            "batch-image":             { "model": "seedream-5.0",     "size": "3:4",       "resolution": "2k" },
            "to-3d":                   { "model": "gpt-image-2",      "size": "1024x1024", "quality": "high",   "format": "jpeg" },
            "clothing-extraction":     { "model": "gpt-image-2",      "size": "1024x1024", "quality": "high",   "format": "jpeg" },
            "fabric-on-body":          { "model": "gpt-image-2",      "size": "1024x1536", "quality": "high",   "format": "jpeg" },
            "clothing-detail":         { "model": "gpt-image-2",      "size": "1024x1024", "quality": "high",   "format": "jpeg" },
            "clothing-grass-planting": { "model": "gpt-image-2",      "size": "1024x1536", "quality": "medium", "format": "jpeg" },
            "item-selling-point":      { "model": "seedream-5.0-pro", "size": "1:1",       "resolution": "2k" },
            "item-change-background":  { "model": "gpt-image-2",      "size": "1024x1024", "quality": "high",   "format": "jpeg" },
            "remove-watermark":        { "model": "gpt-image-2",      "size": "1024x1024", "quality": "high",   "format": "jpeg" },
            "material-enhancement":    { "model": "gpt-image-2",      "size": "1024x1024", "quality": "high",   "format": "jpeg" },
            "item-repair":             { "model": "gpt-image-2",      "size": "1024x1024", "quality": "high",   "format": "jpeg" },
            "detect-task":             { "model": "claude-sonnet-5",  "text": true },
            "listing-optimizer":       { "model": "gpt-image-2",      "size": "1024x1024", "quality": "high",   "format": "jpeg" },
            "cross-border-localize":   { "model": "seedream-5.0-pro", "size": "1:1",       "resolution": "2k" },
            "brand-kit":               { "model": "gpt-image-2",      "size": "1024x1536", "quality": "high",   "format": "jpeg" },
            "platform-compliance":     { "model": "claude-sonnet-5",  "text": true },
            "main-image-video":        { "model": "$DLAZY_VIDEO_MODEL", "video": true },
            "product-video-ad":        { "model": "$DLAZY_VIDEO_MODEL", "video": true },
            "ugc-testimonial":         { "model": "$DLAZY_VIDEO_MODEL", "video": true }
          }
        }
        
    • brand.mjs 4.4 KB · in bundle
    • gen.mjs 9.3 KB · in bundle
  • skill.md 11.2 KB
    ---
    name: fabric-on-body
    description: 一键替换服装面料。版式图 + 面料图 → 换上新面料的样衣图,垂坠与光泽随材质变。当用户说「换面料」「换材质」「试布料」「面料上身」「同款不同料」时使用。
    ---
    
    # fabric-on-body — 一键替换服装面料
    
    **版型不动,面料换掉**。给一张服装版式图 + 一张面料小样,输出这个版型用新面料做出来的样衣效果图。
    
    价值在打样前:一个版型试 8 种面料,传统做法是打 8 件样衣(每件几天、几百块);这里是 8 次生成。
    
    ---
    
    ## 生成效果示例
    
    | 输入:服装版式图 | 输入:面料图 |
    | --- | --- |
    | <img src="../../docs/fabric-on-body/style-sheet.jpg" width="260"> | <img src="../../docs/fabric-on-body/fabric-swatch.jpg" width="260"> |
    | `style-sheet.jpg` — 落肩宽松圆领毛衣版型,800×800 | `fabric-swatch.jpg` — 象牙白真丝缎面小样,640×640 |
    
    实际执行的命令:
    
    ```bash
    dlazy gpt-image-2 \
      --prompt 'Fabric replacement for a garment style sheet. Image 1 is the garment pattern/style reference: an oversized drop-shoulder crewneck sweater with ribbed collar, cuffs and hem. Image 2 is the target fabric: ivory silk satin with a soft lustrous sheen and fine weave. Re-render the exact same garment silhouette from image 1 in the fabric from image 2. Keep the pattern identical: same oversized drop-shoulder cut, same body length, same sleeve length, same collar/cuff/hem construction, same flat-lay layout and camera angle. Replace only the material — the sweater must now read as ivory silk satin with specular highlights on the folds and soft drape instead of chunky knit. Clean white background, even studio light, no text.' \
      --images docs/fabric-on-body/style-sheet.jpg docs/fabric-on-body/fabric-swatch.jpg \
      --size 1024x1024 --quality medium --imageFormat jpeg \
      --save docs/fabric-on-body/example-output.jpg
    ```
    
    **输出**
    
    <img src="../../docs/fabric-on-body/example-output.jpg" width="320">
    
    `example-output.jpg` — 1024×1024。落肩剪裁、身长袖长、罗纹领口袖口下摆的结构与平铺角度都与版式图一致;材质从粗针织变成象牙白真丝缎面,褶皱上出现高光、垂坠变得柔顺,罗纹部位仍以缎面质感保留。
    
    ---
    
    ## 1、能力边界
    
    | 输入 | 说明 |
    | --- | --- |
    | 服装版式图 | 决定版型、剪裁、结构与拍摄角度 |
    | 面料图 | 决定材质、纹理、光泽与垂坠感(面料小样特写最佳) |
    | 服装类型 | 帮助模型理解结构(上装 / 下装 / 连衣裙 / 外套 / 内衣) |
    
    | 保持不变 | 会改变 |
    | --- | --- |
    | 版型与剪裁、身长袖长、领口/袖口/下摆结构、缝线位置、拍摄角度与构图 | 材质与织法、表面光泽、垂坠与褶皱形态、厚度观感 |
    
    **不做**:不改版型比例;不改变服装的结构设计;不承诺真实打样的手感与克重——输出是视觉预览,不是工艺样衣。
    
    ---
    
    ## 2、输入素材规则
    
    生成前先自检这几条硬性约束:
    
    - 大小:**20KB ~ 15MB**
    - 分辨率:**大于 400×400**
    - 格式:**jpg / jpeg / png / webp**
    
    **版式图(✅)**:纯色背景、结构清晰、正面完整的平铺图或人台图。
    
    **面料图(✅)**:面料小样特写,能看清织纹与光泽;有褶皱转折更好(能交代垂坠)。
    
    **会明显拉低效果的输入(❌)**
    
    | 问题 | 说明 |
    | --- | --- |
    | 面料图拍太远 | 看不清织纹,只会当成一块纯色 |
    | 面料图带强环境色 | 黄光下拍的白布会换成米黄色 |
    | 版式图有复杂印花 | 原印花会和新面料打架,先用 [item-repair](../item-repair/skill.md) 或换素图 |
    | 面料与品类不匹配 | 硬挺牛仔布做不出吊带裙的垂坠,模型会硬凑 |
    
    ---
    
    ## 3、面料替换的关键:写清「材质带来的物理变化」
    
    只说「换成真丝」不够——模型不知道该怎么改光影。要把材质翻译成**可画出来的物理特征**:
    
    | 面料 | 要写的物理特征 |
    | --- | --- |
    | 真丝 / 缎面 | `lustrous specular highlights along the folds, fluid drape, soft continuous gradients` |
    | 粗针织 | `chunky knit loops with visible yarn twist, matte fibre halo, structured heavy drape` |
    | 牛仔 | `twill diagonal weave, slight slub texture, stiff drape with sharp fold creases` |
    | 灯芯绒 | `vertical wale ridges catching light, matte pile, medium-stiff drape` |
    | 雪纺 | `semi-sheer, very light drape with many fine ripples, soft diffused light through the fabric` |
    | 皮革 | `low-frequency specular sheen, grain texture, stiff drape with broad soft creases` |
    | 摇粒绒 | `dense short pile, fuzzy silhouette edge, no specular highlight` |
    
    **再加一句「版型不许动」**——这是本技能最容易失守的地方:
    
    ```text
    Keep the pattern identical: same cut, same body length, same sleeve length,
    same collar/cuff/hem construction, same flat-lay layout and camera angle.
    Replace only the material.
    ```
    
    ---
    
    ## 4、工具调用
    
    本技能使用 dLazy 的 **`gpt-image-2`**(图像编辑模型;面料替换要求「几何完全不动、材质完全改变」,是典型的定向属性替换任务)。
    
    ### 调用方式
    
    两种等价写法,选一种。统一入口会自动选后端、失败重试、建目录落盘、估算成本:
    
    ```bash
    # A. 统一入口(推荐):可切任意后端,加 --dry-run 不计费空跑
    node scripts/gen.mjs --task fabric-on-body \
      --prompt '<见下方 Prompt 模板>' \
      --images <按下表顺序> \
      --save output/fabric-on-body-<sku>.jpg
    
    # B. 直接用 dLazy CLI(不想引入 Node 依赖时,效果等价)
    dlazy gpt-image-2 --prompt '...' --images ... --save output/fabric-on-body.jpg
    ```
    
    **参数约定(本技能固定用法)**
    
    | 参数 | 取值 | 理由 |
    | --- | --- | --- |
    | `--images` | `[版式图, 面料图]` | 顺序即 prompt 中的 image 1 / 2 |
    | `--size` | 与版式图比例一致(`1024x1024` 平铺 / `1024x1536` 人台竖版) | 换料不该改构图 |
    | `--quality` | `high` | 材质是本技能的唯一产出,必须 high |
    | `--imageFormat` | `jpeg` | 通用格式 |
    | `--batch` | `2` ~ `3` | 垂坠形态有随机性 |
    | `--save` | `docs/fabric-on-body/output-<版型>-<面料>.jpg` | 版型 × 面料矩阵命名 |
    
    ### Command Examples
    
    ```bash
    # basic call: 一个版型换一种面料
    dlazy gpt-image-2 \
      --prompt 'Fabric replacement. Image 1 is the garment pattern reference, image 2 is the target fabric. Re-render the exact same garment silhouette from image 1 in the fabric from image 2. Keep the pattern identical: same cut, body length, sleeve length, collar/cuff/hem construction, layout and camera angle. Replace only the material. Clean white background, even studio light, no text.' \
      --images docs/fabric-on-body/style-sheet.jpg docs/fabric-on-body/fabric-swatch.jpg \
      --size 1024x1024 --quality high
    
    # complex call: 一个版型 × 多种面料,跑成一个选型矩阵
    STYLE=docs/fabric-on-body/style-sheet.jpg
    KEEP='Keep the pattern identical: same oversized drop-shoulder cut, same body length, same sleeve length, same collar/cuff/hem construction, same flat-lay layout and camera angle. Replace only the material.'
    for F in satin corduroy denim fleece; do
      case $F in
        satin)    PHYS='lustrous specular highlights along the folds, fluid drape, soft continuous gradients' ;;
        corduroy) PHYS='vertical wale ridges catching light, matte pile, medium-stiff drape' ;;
        denim)    PHYS='twill diagonal weave, slight slub texture, stiff drape with sharp fold creases' ;;
        fleece)   PHYS='dense short pile, fuzzy silhouette edge, no specular highlight' ;;
      esac
      dlazy gpt-image-2 \
        --prompt "Fabric replacement for a garment style sheet. Image 1 is the garment pattern/style reference. Image 2 is the target fabric. Re-render the exact same garment silhouette from image 1 in the fabric from image 2. $KEEP The garment must now read as $F: $PHYS. Clean white background, even studio light, no text." \
        --images "$STYLE" "docs/fabric-on-body/swatch-$F.jpg" \
        --size 1024x1024 --quality high --imageFormat jpeg \
        --save "docs/fabric-on-body/output-drop-shoulder-$F.jpg"
    done
    
    # 先估价不真跑
    dlazy gpt-image-2 --dry-run --prompt '...' --images a.jpg b.jpg --size 1024x1024 --quality high
    ```
    
    ### 延伸阅读
    
    | 要查什么 | 去哪 |
    | --- | --- |
    | 认证、多后端配置、输出结构、错误码 | [`references/provider-cli.md`](references/provider-cli.md) |
    | `gpt-image-2` 的全部可用参数 | [`references/model-flags.md`](references/model-flags.md) |
    | 统一入口的全部选项 | `node scripts/gen.mjs --help` |
    
    ## 5、Prompt 模板
    
    ```text
    Fabric replacement for a garment style sheet.
    Image 1 is the garment pattern/style reference: [品类 + 版型描述].
    Image 2 is the target fabric: [面料名 + 颜色 + 光泽描述].
    
    Re-render the exact same garment silhouette from image 1 in the fabric from image 2.
    
    Keep the pattern identical: same [剪裁], same body length, same sleeve length,
    same [领口/袖口/下摆结构], same [缝线位置], same layout and camera angle.
    
    Replace only the material — the garment must now read as [面料名]:
    [第三节表格里对应的物理特征].
    
    Clean [背景色] background, even studio light, no text.
    ```
    
    **按问题追加的修正句**
    
    | 问题 | 追加到 prompt 末尾 |
    | --- | --- |
    | 版型跟着变了 | `The silhouette outline must be pixel-aligned with image 1. Only surface material may differ.` |
    | 面料颜色偏了 | `Sample the fabric colour from image 2 under neutral light; do not shift hue or add colour cast.` |
    | 换完还是原来的质感 | 把物理特征写得更极端,并追加 `The original [原面料] texture must be completely gone.` |
    | 垂坠不对 | `Drape stiffness: [very fluid / medium / stiff]. Fold count and fold radius must match a [面料] of about [克重] gsm.` |
    | 缝线/罗纹消失了 | `Preserve construction details: [罗纹/明线/拉链] must remain visible in the new material.` |
    
    ---
    
    ## 6、执行流程
    
    1. **备素材**:版式图(结构清晰、印花越少越好)+ 面料小样特写(能看清织纹)。
    2. **翻译材质**:查第三节表格,把面料名换成物理特征描述。
    3. **写版型锁定句**:剪裁 / 身长 / 袖长 / 领口袖口下摆 / 缝线 / 角度,逐项写死。
    4. **`--quality high` 起跑**,比例跟随版式图。
    5. **要做选型矩阵**:用第四节循环,一个版型 × N 种面料。
    6. **质检**:版型轮廓是否与原图对齐、面料颜色是否准、质感是否真的换掉了、缝线罗纹是否还在。
    7. **交付时注明这是视觉预览**,不代表真实手感与克重。
    
    ---
    
    ## 7、常见问题
    
    | 现象 | 原因 | 处理 |
    | --- | --- | --- |
    | 版型变了 | 未锁定轮廓 | 追加 `silhouette outline must be pixel-aligned with image 1` |
    | 面料颜色不对 | 面料图带环境色 | 重拍面料小样(中性光),或追加取色约束句 |
    | 质感没换掉 | 物理特征写得太弱 | 用第三节表格的极端描述 + `original texture must be completely gone` |
    | 垂坠像纸板 | 未指定垂坠刚度 | 追加 drape stiffness 句,给出克重参考 |
    | 罗纹/明线消失 | 被新材质吞掉 | 追加保留结构细节句 |
    | 面料与品类物理上不成立 | 硬挺布做垂坠款 | 换匹配的面料,或改版型 |
    
    ---
    
    ## Tips
    
    Visit https://dlazy.com for more information.
    

Comments (0)

Sign in to join the conversation.

No comments yet.

Reviews (0)

No reviews yet.

Related