# AI 布料替換

# 概述
以令人驚嘆的真實感改變您的造型！透過照片模式探索獨特的布料風格——無論是絲滑質地的優雅，或大膽圖案的鮮豔，AI 布料 API 讓材質活起來！開發者可以打造沉浸式的體驗，讓使用者前所未有地看見並感受布料。而且，全新的布料更新隨時到來！


---

## 整合指南
* AI 布料 API 使用指南

本指南說明如何使用 AI 布料 API 上傳圖片、取得預先定義的布料風格，以及建立虛擬試戴任務。


---

* 步驟 1. 使用 File API 上傳檔案

使用 **File API**（`/s2s/v2.0/file`）上傳目標使用者圖片。
**圖片需求：**
* 上傳高解析度的全身照片。
* 確保照片清楚呈現整個身體。
* 避免有多人干擾的物件背景。

**請求範例：**

```bash
curl --request POST \
  --url https://yce-api-01.makeupar.com/s2s/v2.0/file \
  --header 'Authorization: Bearer YOUR_API_KEY' \
  --header 'content-type: application/json' \
  --data '{
    "files": [
      {
        "content_type": "image/jpg",
        "file_name": "full_body_photo_01_3dbd1b6683.jpg",
        "file_size": 547541
      }
    ]
  }'
```


---

* 步驟 2. 取得 File API 回應

回應包含：
* 用於建立 AI 任務的
`file_id`
。
* 用於上傳實際圖片檔案的
`requests.url`
。

**回應範例：**

```json
{
  "status": 200,
  "data": {
    "files": [
      {
        "content_type": "image/jpg",
        "file_name": "full_body_photo_01_3dbd1b6683.jpg",
        "file_id": "SaGaqpDgKwFrVBgMpQMA3HY0LeqdT9/13W5TOD8/u/FfjK3xgCQ+hRt9MJXBFaud",
        "requests": [
          {
            "method": "PUT",
            "url": "https://yce-us.s3-accelerate.amazonaws.com/demo/ttl30/...signature...",
            "headers": {
              "Content-Length": "547541",
              "Content-Type": "image/jpg"
            }
          }
        ]
      }
    ]
  }
}
```


---

* 步驟 3. 上傳圖片到提供的網址

使用 File API 回應中的 `requests.url` 上傳圖片：

```bash
curl --location --request PUT 'https://yce-us.s3-accelerate.amazonaws.com/demo/ttl30/...signature...' \
  --header 'Content-Type: image/jpg' \
  --header 'Content-Length: 547541' \
  --data-binary @'./full_body_photo_01_3dbd1b6683.jpg'
```


---

* 步驟 4. 取得預先定義的布料範本

使用 **範本 API**（`/s2s/v2.0/task/template/fabric`）取得預先定義的布料範本清單：

```bash
curl --request GET \
    --url 'https://yce-api-01.makeupar.com/s2s/v2.0/task/template/fabric?page_size=20&starting_token=73a3c9e69b89' \
    --header 'Authorization: Bearer YOUR_API_KEY'
```


---

* 步驟 5. 建立 AI 任務

使用 **AI 任務 API**（`/s2s/v2.0/task/fabric`）建立虛擬試戴任務。
**參數：**
* 使用者圖片：
`src_file_id`
 或
`src_file_url`
。
* 布料風格：
`template_id`
。

**請求範例：**

```bash
curl --request POST \
    --url https://yce-api-01.makeupar.com/s2s/v2.0/task/fabric \
    --header 'Authorization: Bearer YOUR_API_KEY' \
    --header 'content-type: application/json' \
    --data '{
    "template_id":"good_template_001",
    "src_file_url":"https://example.com/selfie.jpg"
    }'
```
**回應範例：**

```json
{
  "status": 200,
  "data": {
    "task_id": "SaGaqpDgKwFrVBgMpQMA3HY0LeqdT9_13W5TOD8_u_GPi6NqQ3dhlmN-6ntFwhzT"
  }
}
```


---

* 步驟 6. 輪詢任務結果

使用任務 ID 查詢狀態：

```bash
curl --request GET \
  --url https://yce-api-01.makeupar.com/s2s/v2.0/task/fabric/<YOUR_TASK_ID> \
  --header 'Authorization: Bearer YOUR_API_KEY' \
  --header 'content-type: application/json'
```


---

* 步驟 7. 取得結果

成功的回應會包含結果圖片的下載網址：

```json
{
  "status": 200,
  "data": {
    "error": null,
    "results": {
      "url": "https://yce-us.s3-accelerate.amazonaws.com/demo/ttl30/...signature..."
    },
    "task_status": "success"
  }
}
```
API Key 無效的錯誤回應：

```json
{
  "status": 401,
  "error": "Unauthorized",
  "error_code": "InvalidAccessToken"
}
```


---

應用案例：
![](https://bcw-media.s3.ap-northeast-1.amazonaws.com/strapi/assets/AI%20Fabric.png)
![](https://plugins-media.makeupar.com/smb/blog/post/2024-05-07/b103976d-1b0e-4bed-aab4-9307308b84d7.jpg)
![](https://bcw-media.s3.ap-northeast-1.amazonaws.com/strapi/assets/03%20ai%20clothes%20changer.jpg)
拍攝建議：
![拍攝建議](https://bcw-media.s3.ap-northeast-1.amazonaws.com/strapi/assets/AI-Cloth-Guideline.png)


---

## 檔案規格與錯誤
* 支援的格式與尺寸

| AI 功能 | 支援的尺寸 | 支援的檔案大小 | 支援的格式 |
|  --- | --- | --- | --- |
| AI 布料 | 長邊 <= 4096，僅限單人，腹部、臉部與肩膀都必須可見。臉部不可被遮擋。身體應直立並面向前方，不可有坐姿或蹲姿等特殊姿勢。 | < 10MB | jpg/jpeg |

* 錯誤代碼

| 錯誤代碼 | 說明 |
|  --- | --- |
| error_apply_region_not_detected | 服裝區域過小，或在輸入圖片中未被偵測到 |

* 環境與相依性

| 範例程式語言 / 工具 | 建議的執行環境版本 |
|  --- | --- |
| cURL | - bash >= 3.2   - curl >= 7.58（現代 TLS/HTTP 支援）   - jq >= 1.6（穩健的 JSON 解析） |
| Node.js（JavaScript） | Node >= 18（支援全域 fetch） |
| JavaScript | - Chrome / Edge >= 80   - Firefox >= 74   - Safari >= 13.1 |
| PHP | PHP >= 7.4（現代 TLS/相容性），ext-curl（建議）或 allow_url_fopen=On + ext-openssl、ext-json |
| Python | Python >= 3.10（支援 f-strings），requests >= 2.20.0 |
| Java | Java 11+（支援 HttpClient），Jackson Databind >= 2.12.0 |



---

## 點數消耗
| AI 功能 | 消耗的點數 |
|  --- | --- |
| AI 布料替換 V1.0 | 2 |



---

License: Privacy policy

## Servers

```
https://yce-api-01.makeupar.com
```

## Security

### BearerAuthenticationV2

使用標準的 'Bearer authentication'。請在標頭中放入您的 'API Key'：`Authorization:Bearer YOUR_API_KEY`。請注意 'Bearer' 與 'YOUR_API_KEY' 之間有一個空格。

Type: http
Scheme: bearer

## Download OpenAPI description

 - [AI 布料替換](https://docs.perfectcorp.com/_bundle/@l10n/zh-TW/reference/ai_fabric.yaml)

## V1.0

 - [GET /s2s/v2.0/task/template/fabric](https://docs.perfectcorp.com/zh-tw/reference/ai_fabric/v1.0/paths/~1s2s~1v2.0~1task~1template~1fabric/get.md)
 - [POST /s2s/v2.0/task/fabric](https://docs.perfectcorp.com/zh-tw/reference/ai_fabric/v1.0/paths/~1s2s~1v2.0~1task~1fabric/post.md): 查詢任務狀態請參考輪詢指南。
 - [GET /s2s/v2.0/task/fabric/{task_id}](https://docs.perfectcorp.com/zh-tw/reference/ai_fabric/v1.0/paths/~1s2s~1v2.0~1task~1fabric~1%7Btask_id%7D/get.md)
