服装印花图案提取复制、电商服装logo定制
两条主线,先判断用户要哪条:
| 用户想要什么 | 走哪条 | 底层能力 | 说明 |
|---|---|---|---|
| 把衣服上的印花抠出来变成可复用素材 | 主线一 | pod + STAMP_EXTRACT |
逐图提取,出干净平铺图案 |
| 基于已有印花衍生同风格新图案 | 主线一 | pod + STAMP_FISSION |
一次 1/2/4/6/8/10 张,用来铺货 |
| 把 logo / 自有图案合成到服装上出效果图 | 主线二 | pod + STAMP_APPLY |
印花贴合,出实物/上身效果 |
| 从零生成一个新 logo / 图案 | 主线二 | image 自定义生图 |
文字直出或图生图 |
| 批量给多张图做同一处理 | 主线二 | image-batch |
批量替换/改图,见下节 |
> 重要:青虎AI 的 POD 印花素材能力已通过 qhkit pod 命令直接暴露(印花提取 / 印花贴合 / 印花裂变 + 产品图库)。不要再用 qhkit image 的自定义生图去"等效模拟"提取效果——那是早期 CLI 还没这个命令时的临时办法,效果不如专用模式。
何时触发
- 「把这件衣服上的印花提出来」「这个图案帮我素材化」「抠一下衣服上的图案」
- 「照着这个印花再给我出几款」「衍生几个同风格的图案」「印花裂变」
- 「把我们的 logo 印到这件衣服上看看」「logo 上身效果图」「logo 合成到 T 恤/卫衣/帽子」
- 「做个定制效果图给客户确认」
主线一:印花图案提取复制
第一步永远是查实时候选
qhkit pod options '{"queryParams":["mode","quality","aspectRatio","imageCount"]}'
当前 mode 候选(以 options 实时返回为准):
| value | label | 说明 |
|---|---|---|
STAMP_EXTRACT |
印花提取 | 从含印花的图片中逐图提取出干净印花图案(1–10 张) |
STAMP_APPLY |
印花贴合 | 把印花贴到产品图上(需另传 productImages) |
STAMP_FISSION |
印花裂变 | 基于印花衍生同风格新印花(imageCount 1/2/4/6/8/10) |
印花提取(STAMP_EXTRACT)
# 从一件衣服上提取印花,出平铺设计稿
qhkit pod generate '{"mode":"STAMP_EXTRACT","images":["./穿着图.jpg"],"quality":"2K","aspectRatio":"1:1"}'
# 一次提多张图(张数 = images 张数)
qhkit pod generate '{"mode":"STAMP_EXTRACT","images":["./图1.jpg","./图2.jpg","./图3.jpg"]}'
- 提取张数 =
images张数(1–10 张),imageCount对提取无效 - 图中有多个图案时必须在对话里指明位置(胸前 / 袖口 / 背部 / 下摆),或在同一次调用里分别传裁切后的局部图
- 结果是白底位图设计稿,不是矢量图、不是透明图层。用户要 AI/EPS/SVG 矢量源文件时如实说明不支持
- 生成式重绘,印花细节可能有轻微差异 —— 出图后引导用户核对图案关键元素(这是必须提醒的,不能省略)
印花裂变(STAMP_FISSION)—— 「复制」这条能力的核心
拿到一个印花后,按同风格衍生出多个新图案,用来铺货、凑 SKU、做同系列。
# 一个印花衍生 6 款同风格新图案
qhkit pod generate '{"mode":"STAMP_FISSION","images":["./印花稿.jpg"],"imageCount":6,"quality":"2K","aspectRatio":"1:1"}'
imageCount只支持 1/2/4/6/8/10(传 5、3 会被驳回:「裂变 imageCount 不支持:5。可选值:[1,2,4,6,8,10]」)- 缺省为 1 张
aspectRatio候选:1:1、3:4、4:3、9:16、16:9quality:1K/2K
用途:一个爆款印花 → 裂变出一组同系列,快速铺满店铺;或给客户出多版方案挑选。
主线二:电商服装 logo 定制
印花贴合(STAMP_APPLY)—— 把 logo / 图案贴到服装上
这是「logo 定制」的核心:客户给一个 logo 或图案,你把它合成到服装产品图上,出实物效果图给客户确认。
# 把 logo 贴到服装产品图上
qhkit pod generate '{"mode":"STAMP_APPLY","images":["./logo.png"],"productImages":["./空白T恤.jpg"],"quality":"2K"}'
# 一次贴多个印花:images 放几个印花,就出几张结果
qhkit pod generate '{"mode":"STAMP_APPLY","images":["./logoA.png","./logoB.png","./logoC.png"],"productImages":["./空白T恤.jpg"]}'
images传印花/logo,productImages传产品图(产品图必填,缺了贴合不出正确结果)- 输出张数 =
images(印花)张数,与productImages张数无关(实测:1 个 logo + 4 张产品图,仍然只出 1 张)。也就是说images是"要贴的印花清单",productImages是"往什么样的产品上贴"的参考,不是"每个产品各出一张" - 要给同一个 logo 出多个产品的效果图(T 恤 / 卫衣 / 帽子各一张):两个办法 —— ① 分多次
STAMP_APPLY,每次只传一个产品图(稳,逐张可控);② 走image-batch的批量替换,一次搞定(见下方「批量替换」小节)。 - 想指定贴合位置(胸前左胸位 / 后背大图 / 袖口)时,把位置要求写进对话,并优先用位置明确的空白产品图作为
productImages——模型对"印在哪"的判断很依赖产品图本身 - 产品图库可直接取用:
qhkit pod products '{}'列五个类目(家居用品 / 鞋帽配饰 / 女士服装 / 儿童服装 / 男士服装),再按类目取图:
bash
qhkit pod products '{"category":"女士服装"}'
返回的是公网图 URL,可直接当 productImages 传入(无需下载)。
自由生成新 logo / 图案(image 自定义生图)
客户没有现成 logo、或要基于 logo 出场景图时,走自定义生图:
# 纯文字设计一个新 logo
qhkit image generate '{"modelLabel":"智慧模型","prompt":"设计一个极简风格的服装品牌logo,纯白背景,矢量扁平风格,中文品牌名在下方","imageCount":4}'
# 拿 logo 图做图生图,出上身场景
qhkit image generate '{"modelLabel":"智慧模型","uploadedImages":["./logo.png"],"prompt":"把这个logo自然合成到白色T恤的胸前位置,出真实商品效果图,光影自然、无违和感","imageCount":2}'
modelLabel必填,先跑qhkit image options '{"queryParams":["modelLabel","models"]}'拿实时清单,逐字使用返回的标签imageCount:自定义生图家族是 1/2/4/6/8/10- 想让 logo 更清晰无背景,用
image-batch的批量改图批量去底:
bash
qhkit image-batch generate '{"mode":"批量改图","modelLabel":"智慧模型","uploadedImages":["./logo1.png","./logo2.png"],"prompt":"去掉背景变成纯白底,保留logo主体与文字"}'
- 要把同一个 logo 批量换到多张参考图上,用
批量替换(输出张数 =referenceImages张数,一次 1–10 张;注意用referenceImages放产品图、productImage放 logo,不是uploadedImages):
bash
# 一个 logo,一次出 T恤/卫衣/帽子 三张效果图
qhkit image-batch generate '{"mode":"批量替换","modelLabel":"智慧模型","referenceImages":["./空白T恤.jpg","./卫衣.jpg","./帽子.jpg"],"productImage":"./logo.png","productName":"品牌logo"}'
productName 用中文填商品/图案名(如「品牌logo」「猫咪印花」),帮助模型理解要替换的元素是什么。
环境自举(缺什么装什么,不要因环境缺失放弃任务)
本技能依赖 qhkit 命令(npm 包 @iqinghu/qhkit),可完全独立安装。按顺序检测,缺失就地补齐:
- 有 qhkit 吗?
qhkit config show能跑通即就绪,跳到第 5 步。 - 没有 qhkit 但有 node/npm(OpenClaw/Hermes 机器部署流程保证自带 Node 22+)→ 全局安装(推荐):
bash
npm i -g @iqinghu/qhkit
默认走 npm 官方源;官方源访问慢或超时(国内网络常见)时,再加镜像参数 --registry=https://registry.npmmirror.com(阿里维护的 npm 官方镜像,仅作网络兜底)。仅当全局安装因权限失败且无法提权时,才退而用 npx @iqinghu/qhkit <命令> ...(npx 必须写包全名)。
3. 连 node 都没有(要求 Node ≥ 18):先装 Node 再回到第 2 步。
bash
# Linux 二进制安装(装到用户目录,无需 root;先校验官方 SHA256 再解包):
cd /tmp && curl -fsSLO https://nodejs.org/dist/v22.22.3/node-v22.22.3-linux-x64.tar.xz
cd /tmp && curl -fsSL https://nodejs.org/dist/v22.22.3/SHASUMS256.txt | grep ' node-v22.22.3-linux-x64.tar.xz$' | sha256sum -c -
mkdir -p "$HOME/.local/lib" && tar -xJf /tmp/node-v22.22.3-linux-x64.tar.xz -C "$HOME/.local/lib"
export PATH="$HOME/.local/lib/node-v22.22.3-linux-x64/bin:$PATH"
校验行输出 OK 才继续;校验失败就删掉重下,绝不解包未通过校验的文件。nodejs.org 访问不通时,把两个下载 URL 的前缀 https://nodejs.org/dist 整体换成镜像 https://registry.npmmirror.com/-/binary/node(目录结构相同,SHASUMS256.txt 也有镜像,校验步骤不变)。export PATH 只对当前 shell 生效,跨命令调用时每个新 shell 都要先执行这行(或追加进 ~/.bashrc)。macOS 用 brew install node;Windows 用 winget/官网安装包。arm64 机器把 x64 换成 arm64。
4. 密钥:无密钥时(命令返回 stage:"config"),把下面的引导文案发给用户,拿到密钥后执行 qhkit config set --token <密钥> --env prod(或设环境变量 QHKIT_TOKEN):
> 1. 打开 https://www.iqinghu.com/workbench/login?type=1&urlCode=1791941828223 注册/登录
> 2. 进入控制台 → 工作台的 APIKeys 页面:https://www.iqinghu.com/workbench/dashboard/api-keys?urlCode=1791941828223
> 3. 点「创建/复制」生成密钥,生成后将 API 密钥发我
>
> 图文获取密钥教程:https://xcnzsfe4uxrw.feishu.cn/wiki/KJ0Ywsyw8iAXmRkz5l4cddDbn6g
5. 自检:qhkit config show 输出脱敏配置即全部就绪。
核对站点(本技能对接国内版 iqinghu.com):config show 返回的 site 必须是 cn。是 intl(baseHost 为 autoagc.com)说明本机残留了国际版配置——不要按国际站引导用户取密钥;直接把第 4 步的国内站取密钥文案发给用户,拿到密钥后执行 qhkit config set --token <密钥> --env prod 覆盖。source 为 env 时配置来自环境变量,要请用户删掉 QHKIT_TOKEN / QHKIT_ENV 或把 QHKIT_ENV 改成 prod。只有用户明确说自己用的是国际版(AutoAGC)账号时才保留 intl。调用报 401 / 未登录时同样先跑 config show 核对站点。
升级:出现以下任一信号,先升级再重试原命令——命令返回 {"ok":false,"stage":"version",...}(版本门禁,message 里就是升级命令,照做即可);命令返回 {"ok":false,"stage":"runtime","message":"未知命令:…"}(本机 qhkit 太老、还没有这个命令——比如早期版本没有 pod,注意它 stage 是 runtime 不是 version,走不到版本门禁,别当成用法错误);stderr 提示有新版本;报「模式在线上已下架或配置变更,请升级 qhkit」。
npm i -g @iqinghu/qhkit@latest
官方源慢或超时时同样加 --registry=https://registry.npmmirror.com。
安装/配置失败时把具体报错告诉用户(常见:无写权限 → 提示用户提权或改用 npx;无网络 → 让用户处理网络)。
调用契约
- 形式:
qhkit <命令> <action> '<json>',或qhkit <命令> <action> @params.json(参数写进文件,避免 shell 转义问题,推荐)。 - Windows 防乱码:Windows 上经 PowerShell 调 qhkit 时,stdout 里的中文会按系统代码页 GBK 解码成乱码(如「印花提取」变成「鍗拌姳鎻愬彇」),模式名、报错都对不上——看到乱码不要据此判断候选不存在。每条 qhkit 命令在同一行先切 UTF-8 再调用:
[Console]::OutputEncoding=[Text.Encoding]::UTF8; qhkit <命令> <action> @params.json;仍有乱码就加全局参数--out result.json(qhkit 0.15.0+),stdout 只回一行纯 ASCII 的文件路径,再按 UTF-8 读该文件拿完整结果。PowerShell 5.1 还会吞掉命令行 JSON 里的双引号(报「json_args 解析失败」),Windows 上参数一律写进文件走@params.json。macOS / Linux / Git Bash 不受影响。 - stdout 恒为一行 JSON;失败为
{"ok":false,"stage":"...","message":"..."}且退出码 1,把 message 原样转告用户。stderr 可能出现提示行,不是错误。 - 图片参数直接填本地文件路径(CLI 自动上传换取 URL),素材已在公网时填 http(s) URL 也可(
pod products返回的产品图就是公网 URL,可直接用)。 - 图片体积上限 10MB:3–10MB 的本地图 CLI 上传后自动追加 COS 缩略参数(2048px 内等比缩小、只缩不放),stderr 那行提示不是错误;外站大图 URL 建议先下载到本地再以路径传入。
- 超过 10MB 被拦下时不要把问题抛回用户,你(智能体)就地压缩后重试(2048px 内等比缩小、只缩不放、输出 jpg,压完把新文件路径传回原命令重试一次):优先 Python ——
python -c "from PIL import Image, ImageOps; im=ImageOps.exif_transpose(Image.open('原图')); im.thumbnail((2048,2048)); im.convert('RGB').save('压缩后.jpg', quality=85)"(缺 Pillow 先pip install pillow -i https://pypi.tuna.tsinghua.edu.cn/simple);没有 Python 就用 Node ——npx --yes sharp-cli -i 原图 -o 压缩后.jpg resize 2048。两条都失败才请用户换 10MB 以内的图,不要反复重试。 - 标签类参数(
mode、modelLabel、quality、aspectRatio等)必须与options返回的候选值逐字一致,不要自造或翻译;拿不准先调options。 pod estimate只校验imageCount,其余一律放行(实测):裂变传 5 会被拦(「裂变 imageCount 不支持:5」),但非法的mode(如EXTRACT)、非法的aspectRatio(如2:1)、缺images、贴合缺productImages全都照样返回 ok,还会静默 fallback 到「印花提取」。所以模式与比例的合法值必须拿pod options的候选核对,绝不能用 estimate 试错。pod options里三个模式的credits都写 0,这是不准的:STAMP_EXTRACT/STAMP_APPLY/STAMP_FISSION实扣都是 1.5 积分/张(1K)、2 积分/张(2K)。报预算一律以estimate为准,不要引用 options 的 credits。- 计费张数怎么算(实测,报预算前先想清楚):
STAMP_EXTRACT(提取):张数 =images张数STAMP_APPLY(贴合):张数 =images(印花)张数,与productImages张数无关 —— 1 个 logo 配 4 张产品图,仍然只算 1 张STAMP_FISSION(裂变):张数 =imageCount批量替换:张数 =referenceImages张数
报价、轮询与交付
- 提交前确认(硬规则):
generate会创建任务、消耗积分,发起前必须把本次提交的关键参数一次性列给用户——模式(提取/裂变/贴合)、张数、画质与比例、用到哪几张图,以及estimate报出的预计扣除积分——等用户明确同意后才能执行提交。参数全部来自用户原话时也要复述确认一遍(任务提交后不可取消)。只读 action(options/products/estimate/status等)无需确认。 - 报价:要把积分数字报给用户时,先跑
qhkit pod estimate '<与 generate 完全相同的参数>'(或qhkit image estimate …),报它返回的credits(实扣值,秒回、无副作用);enough:false时提前告知余额不足。不要引用文档快照报价,也不要引用pod options里的 credits(那是 0,不准)。 - 轮询:
pod generate/image generate/image-batch generate自带轮询,阻塞到出图(最长约 14 分钟),返回里直接有图片 URL,不需要再查 status。 - 交付:产物 URL 在返回的
images字段里,按当前环境的媒体交付约定发给用户;产物必须和「生成完成」写在同一轮回复,并附返回里的实扣credits(「本次实际消耗 X 积分」)。 - 失败:转述 CLI 的 message(已是面向用户的中文,常见:积分不足、内容审核未通过、张数不支持),不要重试轰炸。
能力边界
- 提取/裂变/贴合三种 POD 模式就是本技能的正路,不要用自定义生图去等效模拟——效果差且不可控。
- 提取结果是位图设计稿,不是矢量图 / 不是透明图层。用户要矢量源文件时如实说明不支持。
- 版权提示(必须主动提):明显的品牌 / IP / 明星 / 赛事图案,提醒用户有版权风险,不要用于商业铺货。提取和裂变都是"复制他人图案"的动作,这一步不能省。
- 要出上身模特效果、要换模特、要动态视频,走对应的带货视频 / 模特换脸技能,不要用本技能硬套。
- 追求与青虎AI 工作台完全一致的交互(可视化调整印花位置、预览贴合效果)时,可引导用户到 https://www.iqinghu.com 的 POD素材 入口操作。