nvzhuang README

The project's README from github.com/paipiange/nvzhuang. As one markdown file: README.md.

拍片哥女装 · AI 服装参考图集 (COSTUME-DB-01)

一个深色主题的纯净服装参考图集网站,收录 1407 张 人物不入镜的 AI 生成服装图像(2:3 比例),支持中英文双语浏览、多维检索,并配备可选的 AI 一键换装试穿。

👗 【Linux.do 3级常任理事专属彩蛋】
听说在 LINUX DO 社区只要升到 3 级(常任理事) 就可以解锁“看女装大佬”的保留节目?身为一名尊贵的 Linux.do 3 级老兵,逛了一圈发现坛里的女装资源还不够看,干脆亲手搓了这个 「拍片哥女装」 项目!
不仅收录了 1407 套纯净高质量服装图,还顺手接了 AI 虚拟换装后端——这下各位佬友哪怕现实中没有小裙子,直接传张自拍照就能一键无痛变身“女装大佬”出道了 😂!

🔗 在线预览:https://paipiange.github.io/nvzhuang/
⭐ GitHub 源码:https://github.com/paipiange/nvzhuang 💡 原作者推文 / 灵感来源:X @giaaibusi
🐧 社区友链:LINUX DO (https://linux.do/)

⏱️ 10 秒了解本项目

📸 预览

中文模式 英文模式 关键词搜索
中文模式 英文模式 关键词搜索

👗 AI 换装效果演示

系统支持上传真实人像与选中的服装,通过 AI 生图大模型进行衣物迁移换装,实现精准保留面容、贴合人体形态的虚拟试穿效果:

① 选中的服装(图 1) ② 上传的模特照片(图 2) ③ AI 换装合成效果(图 3)
选中的服装 上传的模特照片 AI 换装合成效果
参考服装图
(图集中的精选女装)
模特原图
(用户上传的人像日常照)
AI 换装效果(图 1 + 图 2 ➔ 图 3)
(保留模特五官发型,自然融合服饰材质与剪裁)

✨ 功能特性

自定义上传的服装原图仅保留在当前页面内存中,不写入本地存储或生成记录;刷新或关闭页面后会自动清除。生成时只将压缩后的图片内容发送到用户配置的换装后端。

🤖 AI 换装(可选功能)

「AI 换装」需要一个后端服务,把服装真实地「穿」到人像上。后端位于 backend/(GoFrame v2),支持多模型可插拔:

模型别名 模型 协议 说明
comfyui Qwen-Image-Edit-2511(优先) / MiniMax H3 ComfyUI 本地 API 本地零成本离线方案,4 步极速换装,无审查限制,未就绪自动回退 H3
gemini Nano Banana 2(gemini-3.1-flash-image) Google generateContent 云端推荐默认,对真人换装场景无 moderation 阻断
doubao 豆包 Seedream(火山方舟) 火山方舟 国内可用,无需代理网络
gpt-image GPT Image 2(gpt-image-2) OpenAI Images 兼容 OpenAI 协议,支持第三方中转与代理
qwen / zhipu / siliconflow … 通义万相 / 智谱 CogView / 硅基流动 OpenAI Images 兼容 按需在配置中开启

三个关键点都可配置:API Key、Base URL、模型名。加一个国内模型只需在配置里新增一段,无需改代码。

前端 AI 试穿页右上角提供「设置中心」,支持两种使用方式:

  1. 服务器预设:继续使用后端 config.yaml / 环境变量中的模型配置。
  2. 个人模型配置:在当前浏览器保存协议、Base URL、API Key 和模型名,生成时随本次请求临时发送给后端。后端不把这些字段写入数据库、配置文件或业务日志。

浏览器本地保存适合个人设备使用。共享设备使用完毕后,请在设置中心点击「清除本地配置」。个人 Base URL 默认禁止指向 localhost、内网和保留地址,避免公开后端被用作内网请求代理。

配置模型

编辑 backend/manifest/config/config.yaml(模板见 config.example.yaml):

llm:
  models:
    gpt-image:                     # 前端请求用的别名
      provider: openai             # 协议:openai / doubao / gemini
      apiKey: ""                   # 直接填 Key,或留空用环境变量
      envKey: "OPENAI_API_KEY"     # 环境变量名(优先级高于 apiKey)
      baseURL: "https://api.openai.com/v1"   # Base URL 可改(支持中转/代理)
      model: "gpt-image-2"         # 真实模型名

    doubao:                        # 豆包(国内可用)
      provider: doubao
      envKey: "ARK_API_KEY"
      baseURL: "https://ark.cn-beijing.volces.com/api/v3"
      model: "doubao-seedream-3-0-t2i-250415"

    gemini:
      provider: gemini
      envKey: "GEMINI_API_KEY"
      baseURL: "https://generativelanguage.googleapis.com/v1beta"
      model: "gemini-3.1-flash-image"

接入任意 OpenAI 兼容的国内生图模型(通义万相、智谱、硅基流动等),加一段即可:

    qwen:                          # 通义万相示例
      provider: openai
      envKey: "DASHSCOPE_API_KEY"
      baseURL: "https://dashscope.aliyuncs.com/compatible-mode/v1"
      model: "wanx2.1-t2i-turbo"

    # 本地 ComfyUI(零成本离线极速换装,支持 Qwen-Image-Edit / MiniMax H3)
    comfyui:
      provider: comfyui
      baseURL: "http://127.0.0.1:8188"
      model: "qwen-image-edit-2511"
      workflowPath: "workflows/comfyui_qwen_image_edit_2511_api.json"

🎨 ComfyUI 本地离线模式(推荐:零成本、免 Key、超快速度)

如果你的电脑拥有独立显卡(或局域网有运行 ComfyUI 的主机),可以完全免 Key 使用本地生图:

  1. 启动本地 ComfyUI(默认 http://127.0.0.1:8188);
  2. 放入 Qwen-Image-Edit-2511 的模型与 4 步 Lightning LoRA(详见 backend/README.MD);
  3. 打开网页右上角 设置中心,选择「ComfyUI 本地」,点击「测试连接」成功后保存,即可享受 4 步极速离线换装体验。系统已内置双模型自适应能力,未就绪时会自动回退至 H3 方案。

🚀 后端部署(优先推荐 Docker)

后端推荐使用 Docker / Docker Compose 部署,无需在宿主机安装 Go 编译环境,开箱即用。

方式一:Docker Compose(推荐,最省心)

# 1. 复制环境变量模板并填入你的 Key(如国内免翻墙的豆包 ARK_API_KEY,或 OpenAI Key)
cp backend/.env.example backend/.env

# 2. 一键启动后端(内置开箱即用兜底,默认监听 8000 端口)
docker compose up -d

# 服务启动后监听在 http://localhost:8000

提示:若需深度定制模型或高级路由,可复制配置文件模板:cp backend/manifest/config/config.example.yaml backend/manifest/config/config.yaml(未复制时系统也会自动使用模板并稳定监听 8000 端口)。

方式二:Docker Run 单命令运行

cd backend

# 构建镜像
docker build -f manifest/docker/Dockerfile -t costume-tryon .

# 运行容器(按需注入模型 Key,例如豆包或 OpenAI)
docker run -d --name costume-tryon \
  -p 8000:8000 \
  -e ARK_API_KEY="你的豆包ArkKey" \
  -e OPENAI_API_KEY="sk-你的OpenAIKey" \
  costume-tryon

方式三:无 Docker 本地运行

🔗 前端对接后端

前端静态页面通过以下顺序识别换装后端地址(优先级从高到低):

  1. 设置中心:用户在当前浏览器保存的「后端 API 地址」(跨源外部公网后端须使用 HTTPS)
  2. 全局变量:在 HTML 加载前配置 window.AI_API_URL = "http://localhost:8000"
  3. URL 参数:https://你的前端地址/?tryon=http://localhost:8000(安全约束:为防止钓鱼窃取 API Key 与私密照片,?tryon= 仅允许同源或本机回环 localhost/127.0.0.1;外部后端须在设置中心显式保存)
  4. 本地回退:本地以 localhost 或 127.0.0.1 访问前端时,默认自动连接 http://127.0.0.1:8000

🛡️ 接口安全与资源限制(公网部署必备)

后端原生提供企业级调用鉴权与高防资源限制(详见 backend/DEPLOY.md):

  1. 接口访问鉴权:支持 Bearer Token 校验,服务端安全保存 SHA-256 摘要与恒定时间防侧信道比对;前端设置中心支持单独保存「后端访问 Token」,不与大模型 Key 混淆。
  2. 精确 CORS 白名单:严格域名匹配,彻底杜绝跨域滥刷与盗链。
  3. 频率与额度保护:内置令牌桶限流(默认 10 次/分)与 UTC 自然日调用额度(默认 100 次/天),超限返回标准 429 业务码。
  4. 并发控制:全局(默认 2 并发)与单调用主体(默认 1 并发)严格锁定,模型生图不排队堆积。
  5. 图片校验与前端自适应压缩:
    • 仅支持 JPEG / PNG / WebP 真实图像内容探测,严格防范伪造扩展名与代码注入;
    • 单图上限 8 MiB、两图合计 16 MiB、长宽限制 256~8192 px、总像素严格限制在 2000 万以内(防止解压像素炸弹导致服务器 OOM);
    • 前端上传照片时自适应缩放:任一边小于 256 px 时自动等比放大到合规尺寸,高清模式最长边 2048 px,并阶梯压缩(WebP 优先,质量 0.90~0.75)。

完整的多模型接入、生产环境 Nginx 反代与安全加固说明见 backend/DEPLOY.md。

🚀 前端本地启动

本项目前端是纯静态站点,无需构建。任选一种方式运行:

# 方式一:Python 内置服务器(推荐端口 3000,与后端 8000 端口独立不冲突)
python3 -m http.server 3000

# 方式二:Node 简单服务器
npx serve -l 3000 .

# 方式三:直接用现代浏览器打开 index.html

启动后在浏览器打开 http://localhost:3000。若同时启动了后端,本地换装开箱即连。

📁 目录结构

nvzhuang/
├── index.html          # 页面结构 + 样式 + 交互逻辑(含双语字典、AI 试穿搭配台)
├── data.js             # 1407 条服装数据(id / 分类 / 关键词 / 图片路径)
├── docker-compose.yml  # 一键启动后端 Docker 容器编排
├── assets/
│   ├── thumbs/         # 缩略图(webp,网格卡片用)
│   └── img/            # 展示图(webp,弹窗放大用)
├── docs/               # 文档图片与试穿效果演示图
├── backend/            # AI 换装后端(GoFrame v2,可选)
│   ├── docker-compose.yml                 # 后端 Docker Compose 配置
│   ├── .env.example                       # 环境变量示例文件
│   ├── restart.bat / build.bat            # Windows 本地一键启动/重新编译脚本
│   ├── manifest/config/config.yaml        # 模型配置(Key / BaseURL / 模型名)
│   ├── internal/logic/tryon/              # 模型适配器(openai / doubao / gemini)
│   └── DEPLOY.md                          # 部署指南
└── .gitignore

注:原尺寸 PNG(约 1GB+)未纳入仓库,「下载原尺寸」按钮指向原站资源。

🔗 URL 参数

支持通过 URL 参数直接分享特定状态:

?lang=en          # 初始语言(zh 为中文,en 为英文,默认 zh)
?q=lace           # 初始搜索词
?lang=en&q=white  # 组合使用

💡 灵感来源与社区友链

📄 开源许可证与使用规范

本项目基于 MIT License 协议完全免费开源,允许无限制商业使用:

📝 数据说明

数据存于 data.js,每条记录包含:

字段 说明
id 编号(如 SPR-0001)
カテゴリ 分类(日文分类名,如「春」)
キーワード 关键词(英文,空格分隔)
サムネ 缩略图路径
画像 展示图路径
原寸 原尺寸 PNG 路径

说明:カテゴリ、キーワード、サムネ、画像、原寸 是数据原始的日文字段名,为保持与原站数据兼容而保留。网站会在前端自动将它们本地化为中文或英文展示。

Data Fields (English)

Each record in data.js contains the following fields:

Field Description
id Identifier (e.g. SPR-0001)
カテゴリ Category (Japanese category name, e.g. "春" for Spring)
キーワード Keywords (English, space-separated)
サムネ Thumbnail image path
画像 Display image path
原寸 Full-size PNG path

Note: カテゴリ, キーワード, サムネ, 画像, and 原寸 are the original Japanese field names kept for compatibility with the source data. The site localizes them to Chinese or English on the frontend automatically.

nvzhuang (paipiange/nvzhuang)

Searching Database…

> 自定义上传的服装原图仅保留在当前页面内存中,不写入本地存储或生成记录;刷新或关闭页面后会自动清除。生成时只将压缩后的图片内容发送到用户配置的换装后端。 - 电商以图搜同款:大图详情与试穿操作区支持一键唤起淘宝图片搜索,快速查找现实中在售的同款服饰 - ComfyUI 本地离线生图:支持零成本、免 API Key 本地私密运行;集成阿里开源 Qwen-Image-Edit-2511 (Int8) + 4 步极速 Lightning LoRA 与 MiniMax H3 双工作流,具备自动容灾回退能力

Creator
paipiange
Size
123.6 MB
Stars
1.2K
Updated
CommitOct 30
Age
1d
Commits · 90 Days