涂图

  • 首页
  • 解决方案
    • 拍照和图片编辑
    • 视频录制和后期编辑
    • 模板视频
    • 人像美颜
    • 人脸特效
    • 滤镜特效
    • 贴纸特效
  • API服务
    • 人像服务
    • 视频融合
    • 人脸云
    • 在线滤镜
  • 客户案例
  • 下载
  • 文档
  • 关于我们
  • 控制台
  • 一、新手上路
  • 控制台操作说明
    • 控制台使用说明
    • 自定义资源上传说明
  • 二、SDK 文档
  • 图像 SDK
    • 产品说明
      • 产品指南
      • 性能测试报告
    • iOS 文档
      • 快速开始
      • 安装与更新
      • 集成向导
      • 相机组件的使用
      • 相册组件的使用
      • 照片美化组件的使用
      • 主题包基础使用
      • 自定义滤镜
      • 自定义贴纸
      • 自定义界面
      • 自定义 ProgressHUD 提示框(2.0.0~3.2.7)
      • 自定义 ProgressHUD 提示框
      • API 文档
      • 致谢
    • Android 文档
      • 快速开始
      • 安装与更新
      • 集成向导
      • 相机组件的使用
      • 照片美化组件的使用
      • 头像设置组件的使用
      • 多选相册组件的使用
      • 主题包基础使用
      • 自定义贴纸
      • 自定义滤镜
      • 自定义界面
      • 自定义进度信息提示框
      • 自定义 Activity 打开相机
      • API 文档
      • 致谢
    • iOS 技术问题
      • 「Incorrenct app key」
      • 更换滤镜效果图
      • 导航栏与状态栏
      • 组件中使用部分滤镜
      • Cocoapods 相关问题
      • 图片尺寸变化
      • Photos.framework 相关错误
      • 多包名发布
      • GPUImage 的相关错误
      • TuSDKTSALAsset 转换系统对象
      • 滤镜无法显示名称
      • 获取相机的点击事件
    • Android 技术问题
      • Incorrenct app key
      • 重复引用包
      • Recyclerview 库缺失
      • 方法数超出 65536 限制
      • 传入图片路径
      • 指定裁剪比例
      • 指定相册每行列数
      • 禁用相册自动跳转
      • 如何使用部分滤镜?
      • 代码混淆
      • TuSDK 使用的依赖库
      • 多渠道打包
      • 设置相机输出尺寸
      • 相机横屏设置
      • 自定义照片美化组件各功能模块效果默认参数值
    • 拼图设计
      • 拼图模板导出
    • 版本更新日志
      • iOS 版本更新日志
      • Android 更新日志
  • 视频剪辑 SDK
    • 产品说明
      • 产品指南
    • iOS文档
      • TuSDK Video Editor iOS 接入文档
    • Android文档
      • TuSDK Video Editor Android 接入文档
    • 版本更新日志
      • iOS 版本更新日志
      • Android 版本更新日志
  • 流处理(特效相机) SDK
    • 产品说明
      • 产品指南
    • iOS 文档
      • TuSDK特效相机接入文档-iOS
      • TuSDK直播特效接入说明-iOS
    • Android 文档
      • TuSDK特效相机接入文档-Android
      • TuSDK直播特效接入说明-Android
    • 版本更新日志
      • iOS 版本更新日志
      • Android 版本更新日志
  • 视频融合 SDK
    • 产品说明
      • 产品指南
      • 模板管理
    • iOS 文档
      • 快速开始
      • 安装与更新
      • TuSDK EVA 接入说明 2.0
      • API文档
    • Android 文档
      • 快速开始
      • 安装与更新
      • TuSDK EVA 接入说明 (2.0.0+)
      • API 文档
    • 模板设计
      • (新)标准模板设计规范
      • (旧)标准模板设计规范
      • 支持的 AE 功能和属性
      • 动态模板设计规范
    • 模板导出
      • (新)模板导出插件安装
      • (新)模板导出插件使用
      • (旧)模板导出插件安装
      • (旧)模板导出插件使用
      • (旧)模板效果查看器
      • (旧)模板打包规范
    • 版本更新日志
      • iOS 版本更新日志
      • Android 版本更新日志
      • 导出插件版本更新日志
      • 效果查看器更新日志
  • 短视频 SDK
    • 产品说明
      • 产品指南
      • 性能测试报告
    • iOS 文档
      • 快速开始
      • 集成向导
      • 录制相机的使用
      • 视频编辑器的使用
      • 功能 API 的使用
      • API 文档
    • Android 文档
      • 快速开始
      • 集成向导
      • 录制相机的使用
      • 视频编辑器的使用
      • 功能 API 的使用
      • API 文档
    • iOS 技术问题
      • 常见问题
    • Android 技术问题
      • 常见问题
    • 版本更新日志
      • iOS 版本更新日志
      • Android 版本更新日志
  • 三、云服务文档
  • 人像服务
    • 使用文档
      • 快速入门
      • 核心功能
    • API概述
      • API 概述
      • API 文档
    • 常见问题
      • 常见问题
  • 视频融合(云渲染)
    • 使用文档
      • 快速入门
      • 模板管理
    • API概述
      • API概述
      • API 文档
    • 模板设计
      • (新)标准模板设计规范
      • (旧)标准模板设计规范
      • 支持的 AE 功能和属性
      • 动态模板设计规范
    • 模板导出
      • (新)模板导出插件安装
      • (新)模板导出插件使用
      • (旧)模板导出插件安装
      • (旧)模板导出插件使用
      • (旧)模板效果查看器
      • (旧)模板打包规范
    • 常见问题
    • 版本更新日志
      • 导出插件版本更新日志
      • 效果查看器更新日志
  • 人脸云
    • 使用文档
      • 快速入门
      • 核心功能
    • API 概述
      • API 概述
    • 常见问题
      • 常见问题
  • 在线滤镜
    • 使用文档
      • 快速入门
      • 核心功能
      • FILTER API
      • API 错误码表
    • API概述
      • API 概述
    • 常见问题
      • 常见问题
  • 四、综合
  • 涂图隐私协议
  • 用户退出机制
  • 动态贴纸设计规范
  • 美妆贴纸设计规范
  • 云服务账单说明
  • 应用包名与密钥
  • 基础服务开发者升级流程
  • 五、常见问题
  • 常见问题
  • 遇到问题,怎么办?
  • 如何使用贴纸管理、滤镜管理?

TUTUCLOUD 人像服务 API 文档

接口鉴权

参数 sign 生成步骤:

  1. 抽取所有请求参数 (类型为 file 的参数不参与签名)。
  2. 对 参数名 以字典升序 (a-z) 进行排序。
     sortedParams = {
         "key1": "value1",
         "key2": "value2"
     }
  3. 以 参数名参数值 的形式拼接排序后的参数。
     stringParams = "key1value1key2value2"
  4. 把从控制台创建应用后获取的私钥 api_secret 作为后缀拼接到上一步生成的字符串后面, 得到 待签名字符串。
     stringParams = "key1value1key2value2api_secret"
  5. 最后再对 待签名字符串 用 MD5 摘要算法,得到签名结果 sign (32位小写)。
     sign = md5("key1value1key2value2api_secret")

签名示例:

私钥 api_secret = "my_api_secret"

请求参数 = {
   "url": "http://my.test/my.jpg", 
   "api_key": "my_api_key",
   "timestamp": 123456
}

排序后参数 = {
    "api_key": "my_api_key",
    "timestamp": 123456,
    "url": "http://my.test/my.jpg"
}

待签名字符串 = "api_keymy_api_keytimestamp123456urlhttp://my.test/my.jpgmy_api_secret"

sign = "be83843c50dbfe8211256694c1cc5c58"

上传人脸融合模板

POST https://api.portrait.tutucloud.com/v1/facefuse/model

HTTP header

Content-Type: multipart/form-data

参数

参数名 类型 是否必填 说明
api_key string 是 应用 api_key
sign string 是 参数签名
img file img, img_base64, url 3选1 图片文件
img_base64 string img, img_base64, url 3选1 图片文件 base64 编码
url string img, img_base64, url 3选1 图片URL
timestamp int 否 unix时间戳, 从接口 /timestamp 获取

cURL 请求示例

curl -X POST \
https://api.portrait.tutucloud.com/v1/facefuse/model \
-H 'content-type: multipart/form-data' \
-F api_key=39802830831bed188884e193d8465226 \
-F sign=04b29480233f4def5c875875b6bdc3b1 \
-F img=@test.jpg

返回示例

{
    "message": "Success",
    "code": 200,
    "data": {
        "created": "1553074748",
        "faces": [                  // 人脸检测框 位置信息 (归一化)
            {
                "index": 0,
                "x": 0.375,
                "y": 0.2709832191467285,
                "width": 0.18828125298023225,
                "height": 0.2889688313007355
            }
        ],
        "img": "https://file.portrait.tutucloud.com/g01/M00/01/20/CgoKHFzIDxWARE-FAAG2o9XdQVA533.jpg",
        "model_id": "477cbf8a9a5242fb795b12789b297039"
    }
}

删除人脸融合模板

DELETE https://api.portrait.tutucloud.com/v1/facefuse/model/<model_id>

参数

参数名 类型 是否必填 说明
api_key string 是 应用 api_key
sign string 是 参数签名
timestamp int 否 unix时间戳, 从接口 /timestamp 获取

cURL 请求示例

curl -X DELETE \
'https://api.portrait.tutucloud.com/v1/facefuse/model/477cbf8a9a5242fb795b12789b297039?api_key=39802830831bed188884e193d8465226&sign=04b29480233f4def5c875875b6bdc3b1'

返回示例

{
    "message": "Success",
    "code": 200,
    "data": {
        "deleted": 1
    }
}

获取已上传人脸融合模板列表

GET https://api.portrait.tutucloud.com/v1/facefuse/model

参数

参数名 类型 是否必填 说明
api_key string 是 应用 api_key
sign string 是 参数签名
page_index int 否 页数, 默认 1
page_size int 否 每页记录数, 默认 20, 最大为 60
timestamp int 否 unix时间戳, 从接口 /timestamp 接口获取

cURL 请求示例

curl -X GET \
  'https://api.portrait.tutucloud.com/v1/facefuse/model?api_key=39802830831bed188884e193d8465226&sign=04b29480233f4def5c875875b6bdc3b1&page_size=2&page=1'

返回示例

{
    "message": "Success",
    "code": 200,
    "data": {
        "total": 15,
        "count": 2,
        "models": [
            {
                "created": "1553074748",
                "faces": [                  // 人脸检测框 位置信息 (归一化)
                    {
                        "index": 0,
                        "x": 0.375,
                        "y": 0.2709832191467285,
                        "width": 0.18828125298023225,
                        "height": 0.2889688313007355
                    }
                ],                
                "img": "https://file.portrait.tutucloud.com/g01/M00/01/20/CgoKHFzIDxWARE-FAAG2o9XdQVA533.jpg",
                "model_id": "477cbf8a9a5242fb795b12789b297038"
            },
            {
                "created": "1553074749",
                "faces": [],
                "img": "https://file.portrait.tutucloud.com/g01/M00/01/20/CgoKHFzIDxWARE-FAAG2o9XdQVA534.jpg",
                "model_id": "477cbf8a9a5242fb795b12789b297039"
            }
        ]
    }
}

人脸融合

POST https://api.portrait.tutucloud.com/v1/facefuse

HTTP header

Content-Type: multipart/form-data

参数

参数名 类型 是否必填 说明
api_key string 是 应用 api_key
sign string 是 参数签名
img file img, img_base64, url 3选1 图片文件
img_base64 string img, img_base64, url 3选1 图片文件 base64 编码
url string img, img_base64, url 3选1 图片URL
model_id string 是 模板ID, 需要先调用 上传模板 接口
timestamp int 否 unix时间戳, 从接口 /timestamp 获取
output_format string 否 结果图片返回形式, 可选值 [url: 图片链接, base64: 图片文件 base64 编码], 默认以 url 返回

cURL 请求示例

curl -X POST \
https://api.portrait.tutucloud.com/v1/facefuse \
-H 'content-type: multipart/form-data' \
-F api_key=39802830831bed188884e193d8465226 \
-F sign=04b29480233f4def5c875875b6bdc3b1 \
-F model_id=477cbf8a9a5242fb795b12789b297039 \
-F img=@test.jpg

返回示例

{
    "message": "Success",
    "code": 200,
    "data": {
        "input": "https://file.portrait.tutucloud.com/g03/M00/01/0C/wKjIZ1yq69aAecIIAAD5oHJ2ocA15.jpg",
        "output": "https://file.portrait.tutucloud.com/g04/M00/01/0C/wKjIaFyq69qACZArAADvHmvAzBk512.jpg"
    }
}

多人脸融合

POST https://api.portrait.tutucloud.com/v1/facefuse/multi

HTTP header

Content-Type: multipart/form-data

参数

参数名 类型 是否必填 说明
api_key string 是 应用 api_key
sign string 是 参数签名
img file img, img_base64, url 3选1 图片文件 列表
img_base64 json img, img_base64, url 3选1 图片文件 base64 编码 数组
url json img, img_base64, url 3选1 图片URL 数组
face_index json 是 人脸位置索引 数组, face_index 为 上传模板 接口返回: data.models.faces.index, face_index 需和上传的图片列表一一对应
model_id string 是 模板ID, 需要先调用 上传模板 接口
timestamp int 否 unix时间戳, 从接口 /timestamp 获取
output_format string 否 结果图片返回形式, 可选值 [url: 图片链接, base64: 图片文件 base64 编码], 默认以 url 返回

cURL 请求示例 (img)

curl -X POST \
https://api.portrait.tutucloud.com/v1/facefuse/multi \
-H 'content-type: multipart/form-data' \
-F api_key=39802830831bed188884e193d8465226 \
-F sign=04b29480233f4def5c875875b6bdc3b1 \
-F model_id=477cbf8a9a5242fb795b12789b297039 \
-F 'face_index=[1,3]' \
-F img=@face1.jpg \
-F img=@face3.jpg

cURL 请求示例 (url)

curl -X POST \
https://api.portrait.tutucloud.com/v1/facefuse/multi \
-H 'content-type: multipart/form-data' \
-F api_key=39802830831bed188884e193d8465226 \
-F sign=04b29480233f4def5c875875b6bdc3b1 \
-F model_id=477cbf8a9a5242fb795b12789b297039 \
-F 'face_index=[1,3]' \
-F 'url=["http://my.img/face_1.jpg","http://my.img/face_3.jpg"]'

返回示例

{
    "message": "Success",
    "code": 200,
    "data": {
        "input_list": [
            {
                "face_index": 1,
                "input": "https://file.portrait.tutucloud.com/img/face_1.jpg",
            },
            {
                "face_index": 3,
                "input": "https://file.portrait.tutucloud.com/img/face_3.jpg",
            }
        ],
        "output": "https://file.portrait.tutucloud.com/g04/M00/01/0C/wKjIaFyq69qACZArAADvHmvAzBk512.jpg"
    }
}

人脸微整形

POST https://api.portrait.tutucloud.com/v1/plastic

HTTP header

Content-Type: multipart/form-data

参数

参数名 类型 是否必填 说明
api_key string 是 应用 api_key
sign string 是 参数签名
img file img, img_base64, url 3选1 图片文件
img_base64 string img, img_base64, url 3选1 图片文件 base64 编码
url string img, img_base64, url 3选1 图片URL
args json 否 微整形参数, 详见下表
timestamp int 否 unix时间戳, 从接口 /timestamp 获取
output_format string 否 结果图片返回形式, 可选值 [url: 图片链接, base64: 图片文件 base64 编码], 默认以 url 返回

整形参数 args

参数名 值范围 默认值 说明
eyeEnlargeSize [0.0, 1.0] 0.6 大眼
chinSize [0.0, 1.0] 0.5 瘦脸
noseSize [0.0, 1.0] 0.0 瘦鼻
mouthWidth [-1.0, 1.0] 0.0 嘴宽
eyebrowArch [-1.0, 1.0] 0.0 眉宽
eyeDis [-1.0, 1.0] 0.0 眼距
eyeAngle [-1.0, 1.0] 0.0 眼角
jawSize [-1.0, 1.0] 0.0 下巴

cURL 请求示例

curl -X POST \
https://api.portrait.tutucloud.com/v1/plastic \
-H 'content-type: multipart/form-data' \
-F api_key=39802830831bed188884e193d8465226 \
-F sign=04b29480233f4def5c875875b6bdc3b1 \
-F 'args={"eyeEnlargeSize": 1.2, "chinSize": 0.05, "jawSize": -0.01}' \
-F img=@test.jpg

返回示例

{
    "message": "Success",
    "code": 200,
    "data": {
        "input": "https://file.portrait.tutucloud.com/g03/M00/01/0C/wKjIZ1yq69aAecIIAAD5oHJ2ocA15.jpg",
        "output": "https://file.portrait.tutucloud.com/g04/M00/01/0C/wKjIaFyq69qACZArAADvHmvAzBk512.jpg"
    }
}

人像美颜

POST https://api.portrait.tutucloud.com/v1/beautify

HTTP header

Content-Type: multipart/form-data

参数

参数名 类型 是否必填 说明
api_key string 是 应用 api_key
sign string 是 参数签名
img file img, img_base64, url 3选1 图片文件
img_base64 string img, img_base64, url 3选1 图片文件 base64 编码
url string img, img_base64, url 3选1 图片URL
mode string 否 美颜模式, 可选值: [natural: 精准, moist: 极致], 默认值:natural
args json 否 微整形参数, 详见下表
timestamp int 否 unix时间戳, 从接口 /timestamp 获取
output_format string 否 结果图片返回形式, 可选值 [url: 图片链接, base64: 图片文件 base64 编码], 默认以 url 返回

美颜参数 args

参数名 值范围 默认值 说明
smoothing [0.0, 1.0] 0.5 磨皮
fair [0.0, 1.0] 0.0 美白
ruddy [0.0, 1.0] 0.0 红润

cURL 请求示例

curl -X POST \
https://api.portrait.tutucloud.com/v1/beautify \
-H 'content-type: multipart/form-data' \
-F api_key=39802830831bed188884e193d8465226 \
-F sign=04b29480233f4def5c875875b6bdc3b1 \
-F mode=moist \
-F 'args={"smoothing": 0.8, "ruddy": 1.0}' \
-F img=@test.jpg

返回示例

{
    "message": "Success",
    "code": 200,
    "data": {
        "input": "https://file.portrait.tutucloud.com/g03/M00/01/0C/wKjIZ1yq69aAecIIAAD5oHJ2ocA15.jpg",
        "output": "https://file.portrait.tutucloud.com/g04/M00/01/0C/wKjIaFyq69qACZArAADvHmvAzBk512.jpg"
    }
}

获取时间戳

GET https://api.portrait.tutucloud.com/timestamp

如请求其它接口时传了timestamp参数, 服务器则会和当前时间进行比较, 如晚于服务器当前时间超过60秒, 则会拒绝服务。

参数

无

返回示例

{
  "message": "Success",
  "code": 200,
  "data": {
    "timestamp": 1553249584
  }
}

返回码

返回码 说明
200 请求成功
4000 无效的请求
4001 无效的 api_key 参数
4002 缺少必填参数
4003 签名验证失败
4004 获取上传文件失败
4005 无效的 model_id 参数
4006 无效的 timestamp 参数
4007 文件格式不支持
4008 文件大小超过最大限制
4009 从 url 下载文件失败
4010 服务未开通
4011 余额不足
4012 请求数超过最大限制
4013 无效的美颜 mode 参数
4014 url 输入文件未找到或已过期
4100 args 参数格式错误, 必须为 json
4101 url 参数格式错误, 必须为 json
4102 img_base64 参数格式错误, 必须为 json
4103 face_index 参数格式错误, 必须为 json
4200 未检到人脸
4201 face_index 和 上传文件 数量不匹配
4202 错误的 face_index 值
500 内部服务错误
5001 服务处理失败
5003 服务不可用

tips

  • 图片参数:当图片参数 img , img_base64, url 同时传入时, 服务器会以 img > img_base64 > url 的优先级顺序去获取图片。
  • 提升效率:根据使用场景,若需要对同一张图片进行不同的参数调节,如切换人脸融合模板或者是调节微整形、美颜参数,只需要将首次请求后返回的 input 字段作为图片参数 url 传入, 即可节省重复传输图片的时间。

  • 接口鉴权
  • 上传人脸融合模板
  • 删除人脸融合模板
  • 获取已上传人脸融合模板列表
  • 人脸融合
  • 多人脸融合
  • 人脸微整形
  • 人像美颜
  • 获取时间戳
  • 返回码
  • tips
  • 在线技术支持
  • 专业售前售后团队
  • 版本定期更新
  • 全方位解决方案

商务合作

  • 177-6716-7529
  • 2969573855
  • sales@tusdk.com
  • 浙江省 杭州市 西湖区 西斗门9号 福地创业园1号楼3楼301室

关注我们

qrcode

©2019-2025 TUTUCLOUD. All Rights Reserved. 杭州元凡视觉智能科技有限公司 | 浙ICP备14040447号-1 | 浙公网安备33010602001649号

  • 177-6716-7529
  • sales@tusdk.com
  • 2969573855