# zhiyu_aitryon **Repository Path**: dongdongdong_1111/zhiyu_aitryon ## Basic Information - **Project Name**: zhiyu_aitryon - **Description**: 接阿里云一键换装 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-03-22 - **Last Updated**: 2025-04-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 阿里云试装接口云函数 (tryOnOutfit) ## 功能概述 `tryOnOutfit`是一个基于自建服务器的API接口,提供虚拟试衣功能。该接口通过阿里云DashScope的AI服务,将用户的模特图片与选定的服装图片合成,生成穿搭效果图。 ## 技术架构 - **运行环境**:自建服务器环境 - **编程语言**:PHP - **主要依赖**: - `wx-server-sdk`:微信云开发SDK - `guzzlehttp/guzzle`:HTTP请求库 - `firebase/php-jwt`:JWT令牌处理 ## 阿里云DashScope API端点 该云函数使用以下阿里云DashScope API: 1. **提交试衣任务**: - URL: `POST https://dashscope.aliyuncs.com/api/v1/services/aigc/image2image/image-synthesis` - 功能:提交模特图片和服装图片,创建虚拟试衣任务 2. **查询任务状态**: - URL: `GET https://dashscope.aliyuncs.com/api/v1/tasks/{task_id}` - 功能:查询已提交任务的处理状态和结果 ## API接口说明 ### 1. 提交试衣任务 #### 请求方式 ```php // PHP云函数调用 $result = callCloudFunction('tryOnOutfit', [ 'token' => '用户登录令牌', 'modelImage' => '模特图片路径', 'topImage' => '上衣图片路径', 'bottomImage' => '裤子图片路径' // 可选 ]); ``` #### 参数说明 | 参数名 | 类型 | 必填 | 说明 | |-------|------|-----|------| | token | String | 是 | 用户登录令牌 | | modelImage | String | 是 | 模特图片路径,可以是云存储路径或HTTPS URL | | topImage | String | 是 | 上衣图片路径,可以是云存储路径或HTTPS URL | | bottomImage | String | 否 | 裤子图片路径,可以是云存储路径或HTTPS URL | #### 返回结果 ```json { "success": true, "data": { "task_id": "任务ID", "task_status": "PENDING" } } ``` ### 2. 查询任务状态 #### 请求方式 ```php // PHP云函数调用 $result = callCloudFunction('tryOnOutfit', [ 'action' => 'query', 'taskId' => '任务ID' ]); ``` #### 参数说明 | 参数名 | 类型 | 必填 | 说明 | |-------|------|-----|------| | action | String | 是 | 固定值 'query' | | taskId | String | 是 | 要查询的任务ID | #### 返回结果 ```json { "success": true, "data": { "taskId": "任务ID", "status": "SUCCEEDED", // PENDING, RUNNING, SUCCEEDED, FAILED "result": { "url": "结果图片URL" // 仅当status为SUCCEEDED时才有 } } } ``` ## 内部功能模块 ### 1. 认证模块 - **validateToken**:验证用户令牌的有效性,确保只有登录用户才能使用服务。 ### 2. 图片处理模块 - **getAccessibleImageUrl**:将微信云存储路径转换为公网可访问的URL,确保阿里云API可以访问图片。 ### 3. 试衣任务处理模块 - **submitTryOnTask**:组装并提交试衣任务到阿里云DashScope服务。 - **queryTaskStatus**:查询阿里云任务的处理状态,获取结果。 ### 4. 数据存储模块 - **createTryOnRecord**:在数据库中创建试衣记录。 - **ensureCollectionExists**:确保必要的数据库集合存在。 ## 数据库结构 云函数使用了以下数据库集合: ### 1. tryOn_records集合 记录用户的试衣请求历史。 | 字段名 | 类型 | 说明 | |-------|------|------| | openid | String | 用户OpenID | | taskId | String | 阿里云任务ID | | params | Object | 请求参数 | | status | String | 任务状态 | | createTime | Date | 创建时间 | | updateTime | Date | 更新时间 | ### 2. try_on_tasks集合 记录试衣任务详情和状态。 | 字段名 | 类型 | 说明 | |-------|------|------| | taskId | String | 阿里云任务ID | | openid | String | 用户OpenID | | topImage | String | 上衣图片路径 | | bottomImage | String | 裤子图片路径 | | modelImage | String | 模特图片路径 | | status | String | 任务状态 | | resultUrl | String | 结果图片URL(任务成功时) | | createTime | Date | 创建时间 | ## 注意事项 1. API密钥存储在配置文件中,请妥善保管。 2. 图片路径支持云存储路径和HTTPS URL两种格式。 3. 阿里云DashScope服务采用异步处理模式,提交后需要查询任务状态获取结果。 4. 支持无底装(仅上衣)的试穿操作。 ## 错误处理 云函数会返回标准化的错误信息: ```json { "success": false, "code": 401, // 可能的错误码 "message": "错误信息" } ``` 常见错误码: - 401: 未登录或登录已过期 - 400: 请求参数错误 - 500: 服务器内部错误