开放能力
开发平台
行业应用
生态合作
开发与教学
资讯 社区 控制台
技术能力
语音技术
图像技术
文字识别
人脸与人体识别
视频技术
AR与VR
自然语言处理
知识图谱
数据智能
场景方案
部署方案
行业应用
智能教育
智能医疗
智能零售
智能工业
企业服务
智能政务
智能农业
信息服务
智能园区
智能硬件
人脸识别

    高清人像美化

    图片美化API

    如果您对文档内容有任何疑问,可以通过以下几种方式联系我们:

    • 在百度云控制台内 提交工单,咨询问题类型请选择人工智能服务
    • 如有需要讨论的疑问,欢迎进入 AI社区 与其他开发者们一同交流
    • 特效客户交流QQ群:583486416

    能力介绍

    提供四项高清人像美化能力的api处理方式(美颜、滤镜、五官塑形、美妆),并支持多种文件质量输出。

    请求URL数据格式

    向API服务地址使用POST发送请求,必须在URL中带上参数access_token,可通过后台的API Key和Secret Key生成,具体方式请参考“Access Token获取”。

    示例代码

    #!/bin/bash
    curl -i -k 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=【百度云应用的AK】&client_secret=【百度云应用的SK】'
    <?php
    function request_post($url = '', $param = '') {
            if (empty($url) || empty($param)) {
                return false;
            }
            
            $postUrl = $url;
            $curlPost = $param;
            $curl = curl_init();//初始化curl
            curl_setopt($curl, CURLOPT_URL,$postUrl);//抓取指定网页
            curl_setopt($curl, CURLOPT_HEADER, 0);//设置header
            curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);//要求结果为字符串且输出到屏幕上
            curl_setopt($curl, CURLOPT_POST, 1);//post提交方式
            curl_setopt($curl, CURLOPT_POSTFIELDS, $curlPost);
            $data = curl_exec($curl);//运行curl
            curl_close($curl);
            
            return $data;
        }
    
        $url = 'https://aip.baidubce.com/oauth/2.0/token';
        $post_data['grant_type']       = 'client_credentials';
        $post_data['client_id']      = '你的 Api Key';
        $post_data['client_secret'] = '你的 Secret Key';
        $o = "";
        foreach ( $post_data as $k => $v ) 
        {
            $o.= "$k=" . urlencode( $v ). "&" ;
        }
        $post_data = substr($o,0,-1);
        
        $res = request_post($url, $post_data);
    
        var_dump($res);
    
    ?>
    package com.baidu.ai.aip.auth;
    
    import org.json.JSONObject;
    
    import java.io.BufferedReader;
    import java.io.InputStreamReader;
    import java.net.HttpURLConnection;
    import java.net.URL;
    import java.util.List;
    import java.util.Map;
    
    /**
     * 获取token类
     */
    public class AuthService {
    
        /**
         * 获取权限token
         * @return 返回示例:
         * {
         * "access_token": "24.460da4889caad24cccdb1fea17221975.2592000.1491995545.282335-1234567",
         * "expires_in": 2592000
         * }
         */
        public static String getAuth() {
            // 官网获取的 API Key 更新为你注册的
            String clientId = "百度云应用的AK";
            // 官网获取的 Secret Key 更新为你注册的
            String clientSecret = "百度云应用的SK";
            return getAuth(clientId, clientSecret);
        }
    
        /**
         * 获取API访问token
         * 该token有一定的有效期,需要自行管理,当失效时需重新获取.
         * @param ak - 百度云官网获取的 API Key
         * @param sk - 百度云官网获取的 Securet Key
         * @return assess_token 示例:
         * "24.460da4889caad24cccdb1fea17221975.2592000.1491995545.282335-1234567"
         */
        public static String getAuth(String ak, String sk) {
            // 获取token地址
            String authHost = "https://aip.baidubce.com/oauth/2.0/token?";
            String getAccessTokenUrl = authHost
                    // 1. grant_type为固定参数
                    + "grant_type=client_credentials"
                    // 2. 官网获取的 API Key
                    + "&client_id=" + ak
                    // 3. 官网获取的 Secret Key
                    + "&client_secret=" + sk;
            try {
                URL realUrl = new URL(getAccessTokenUrl);
                // 打开和URL之间的连接
                HttpURLConnection connection = (HttpURLConnection) realUrl.openConnection();
                connection.setRequestMethod("GET");
                connection.connect();
                // 获取所有响应头字段
                Map<String, List<String>> map = connection.getHeaderFields();
                // 遍历所有的响应头字段
                for (String key : map.keySet()) {
                    System.err.println(key + "--->" + map.get(key));
                }
                // 定义 BufferedReader输入流来读取URL的响应
                BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
                String result = "";
                String line;
                while ((line = in.readLine()) != null) {
                    result += line;
                }
                /**
                 * 返回结果示例
                 */
                System.err.println("result:" + result);
                JSONObject jsonObject = new JSONObject(result);
                String access_token = jsonObject.getString("access_token");
                return access_token;
            } catch (Exception e) {
                System.err.printf("获取token失败!");
                e.printStackTrace(System.err);
            }
            return null;
        }
    
    }
     # encoding:utf-8
    import requests 
    
    # client_id 为官网获取的AK, client_secret 为官网获取的SK
    host = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=【官网获取的AK】&client_secret=【官网获取的SK】'
    response = requests.get(host)
    if response:
        print(response.json())
    #include <iostream>
    #include <curl/curl.h>
    #include <json/json.h>
    #include "access_token.h"
    // libcurl库下载链接:https://curl.haxx.se/download.html
    // jsoncpp库下载链接:https://github.com/open-source-parsers/jsoncpp/
    // 获取access_token所需要的url
    const std::string access_token_url = "https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials";
    // 回调函数获取到的access_token存放变量
    // static std::string access_token_result;
    /**
     * curl发送http请求调用的回调函数,回调函数中对返回的json格式的body进行了解析,解析结果储存在result中
     * @param 参数定义见libcurl库文档
     * @return 返回值定义见libcurl库文档
     */
    static size_t callback(void *ptr, size_t size, size_t nmemb, void *stream) {
        // 获取到的body存放在ptr中,先将其转换为string格式
        std::string s((char *) ptr, size * nmemb);
        // 开始获取json中的access token项目
        Json::Reader reader;
        Json::Value root;
        // 使用boost库解析json
        reader.parse(s,root);
        std::string* access_token_result = static_cast<std::string*>(stream);
        *access_token_result = root["access_token"].asString();
        return size * nmemb;
    }
    
    /**
     * 用以获取access_token的函数,使用时需要先在百度云控制台申请相应功能的应用,获得对应的API Key和Secret Key
     * @param access_token 获取得到的access token,调用函数时需传入该参数
     * @param AK 应用的API key
     * @param SK 应用的Secret key
     * @return 返回0代表获取access token成功,其他返回值代表获取失败
     */
    int get_access_token(std::string &access_token, const std::string &AK, const std::string &SK) {
        CURL *curl;
        CURLcode result_code;
        int error_code = 0;
        curl = curl_easy_init();
        if (curl) {
            std::string url = access_token_url + "&client_id=" + AK + "&client_secret=" + SK;
            curl_easy_setopt(curl, CURLOPT_URL, url.data());
            curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0);
            curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0);
            std::string access_token_result;
            curl_easy_setopt(curl, CURLOPT_WRITEDATA, &access_token_result);
            curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, callback);
            result_code = curl_easy_perform(curl);
            if (result_code != CURLE_OK) {
                fprintf(stderr, "curl_easy_perform() failed: %s\n",
                        curl_easy_strerror(result_code));
                return 1;
            }
            access_token = access_token_result;
            curl_easy_cleanup(curl);
            error_code = 0;
        } else {
            fprintf(stderr, "curl_easy_init() failed.");
            error_code = 1;
        }
        return error_code;
    }
    using System;
    using System.Collections.Generic;
    using System.Net.Http;
    
    namespace com.baidu.ai
    {
        public static class AccessToken
    
        {
            // 调用getAccessToken()获取的 access_token建议根据expires_in 时间 设置缓存
            // 返回token示例
            public static String TOKEN = "24.adda70c11b9786206253ddb70affdc46.2592000.1493524354.282335-1234567";
    
            // 百度云中开通对应服务应用的 API Key 建议开通应用的时候多选服务
            private static String clientId = "百度云应用的AK";
            // 百度云中开通对应服务应用的 Secret Key
            private static String clientSecret = "百度云应用的SK";
    
            public static String getAccessToken() {
                String authHost = "https://aip.baidubce.com/oauth/2.0/token";
                HttpClient client = new HttpClient();
                List<KeyValuePair<String, String>> paraList = new List<KeyValuePair<string, string>>();
                paraList.Add(new KeyValuePair<string, string>("grant_type", "client_credentials"));
                paraList.Add(new KeyValuePair<string, string>("client_id", clientId));
                paraList.Add(new KeyValuePair<string, string>("client_secret", clientSecret));
    
                HttpResponseMessage response = client.PostAsync(authHost, new FormUrlEncodedContent(paraList)).Result;
                String result = response.Content.ReadAsStringAsync().Result;
                Console.WriteLine(result);
                return result;
            }
        }
    }
    var https = require('https');
    var qs = require('querystring');
    
    const param = qs.stringify({
        'grant_type': 'client_credentials',
        'client_id': '您的 Api Key',
        'client_secret': '您的 Secret Key'
    });
    
    https.get(
        {
            hostname: 'aip.baidubce.com',
            path: '/oauth/2.0/token?' + param,
            agent: false
        },
        function (res) {
            // 在标准输出中查看运行结果
            res.pipe(process.stdout);
        }
    );

    注意access_token的有效期为30天,切记需要每30天进行定期更换,或者每次请求都拉取新token

    例如此接口,使用HTTPS POST发送:

    https://aip.baidubce.com/rest/2.0/face/v1/FaceBeauty?access_token=24.f9ba9c5341b67688ab4added8bc91dec.2592000.1485570332.282335-8574074

    POST中Body的参数,按照下方请求参数说明选择即可。

    提示:如果您为百度云老用户,正在使用其他非AI的服务,可以参考百度云AKSK鉴权方式发送请求,虽然请求方式鉴权方法和本文所介绍的不同,但请求参数和返回结果一致。

    请求说明

    注意事项

    1)终端上传图片base64和美化参数,云端渲染后返回图片base64;

    2)一次http请求是一个完整的交互,即本次渲染不依赖上一次的结果;

    请求示例

    HTTP方法:POST

    请求URL: https://aip.baidubce.com/rest/2.0/face/v1/FaceBeauty

    URL参数:

    参数
    access_token 通过API Key和Secret Key获取的access_token,参考“Access Token获取

    Header:

    参数
    Content-Type application/json

    Body中放置请求参数,参数详情如下:

    请求参数

    参数名 示例值 类型 必填项 描述
    image /9j/4RRPRX String 图片base64编码
    image_quality 80 Number 输出的图片质量(10~100),默认80
    property Object
    property.entirety Array 滤镜
    property.entirety.style rosy String 风格值
    property.shap Array 美型
    property.shap.style defaultFace String 风格
    property.shap.value 0.5 Number 风格值
    property.skin Array 美颜
    property.skin.style white String 风格
    roperty.skin.value 0.6 Number 风格值
    property.visskin Array vis祛眼圈、眼袋、法令纹,(注意:该部分参数请求耗时较长,图片分辨率<4K)
    property.visskin.style eyebags String 优化项
    property.visskin.value 0.6 Number 优化值
    property.makeup Array 美妆
    property.makeup.kind lips String 美妆类型
    property.makeup.style milkTeaColor String 风格
    property.makeup.value 0.3 Number 风格值
    property.color Array 画质颜色
    property.color.style brightness String 调节项
    property.color.value 0.6 Number 风格值

    关于property的参数

    其中,基础滤镜、美妆滤镜能力的最下层风格参数单次请求选择一项即可,其他能力的风格参数可选多项。如不需要某项能力可不选。

    美颜能力

    种类(kind) 风格(style) 风格值(value) 备注
    基础滤镜entirety memory 回忆 0.0~1.0
    基础滤镜entirety gril 少女
    rosy 红润
    city 都市
    shimmer 微光
    redLips 红唇
    skin美颜滤镜-(该部分祛黑眼圈效果与visskin下的黑眼圈二选一使用) white 美白
    smooth 磨皮
    darkcircles 祛黑眼圈
    visskin vis优化美肤 -(注意:该部分参数请求耗时较长,图片分辨率<4K) darkcircles 祛黑眼圈
    lawpattern 祛法令纹
    eyebags 祛眼袋
    color画质颜色 brightness 亮度 -1.0~1.0 默认值0.1
    contrast 对比度 -1.0~1.0 默认值0.1
    saturation 饱和度 -1.0~1.0 默认值0.15
    shape美型滤镜 defaultFace 默认脸0.0~1.0
    babyFace 娃娃脸
    exquisiteFace 精致
    freshMeetFace 鲜肉
    liveVideoFace 网红
    maleFace 型男
    naturalFace 自然
    makeup美妆滤镜-cheek 腮红 naturePink 自然粉 0.0~1.0
    japaneseRed 日系红
    highlights 亮点
    sunburn 晒伤
    flashing 闪烁
    makeup美妆滤镜-美瞳 eyeball firstSightGray 初见灰 0.0~1.0
    teardrop 泪珠闪
    matteBrown 雾绒棕
    makeup美妆滤镜-eyebrow 眉毛 goddessBrown 女神棕 0.0~1.0
    sandei 山黛黑
    willowPalm 柳叶棕
    makeup美妆滤镜-eyeliner 眼线 playful 小俏皮 0.0~1.0
    wildcat 小野猫
    makeup美妆滤镜-eyeshadow 眼影 customPainted 定制彩妆 0.0~1.0
    peachBlossom 桃花妆
    sweetTangerine 甜橘妆
    flicker 细闪妆
    diamond 贴钻妆
    makeup美妆滤镜-lips 口红 missYou 想你色 0.0~1.0
    cherryRed 樱桃红
    caramelColor 焦糖色
    neutralCold 中性冷酷
    milkTeaColor 奶茶色
    loveLips 爱心嘴唇
    makeup美妆滤镜-trimming 修容 europeAmerica 欧美 0.0~1.0
    waterLight 水光

    示例代码:

    {
      "image": "sfasq35sadvsvqwr5q...",
      "image_quality": 80,
      "property": {
        "entirety": [
          {
            "style": "rosy",
            "value": 0.2
          }
        ],
        "shape": [
          {
            "style": "defaultFace",
            "value": 0.5
          }
        ],
        "skin": [
          {
            "style": "white",
            "value": 0.9
          },
          {
            "style": "smooth",
            "value": 0.9
          }
          ],
          "visskin":[
          {
            "style": "lawpattern",
            "value": 0.9
          },
          {
            "style": "darkcircles",
            "value": 1
          }
        ],
          "color":[
          {
            "style": "brightness",
            "value": 0.9
          },
          {
            "style": "contrast",
            "value": 1
          }
        ],
        "makeup": [
          {
            "kind": "lips",
            "style": "milkTeaColor",
            "value": 0.3
          },
          {
            "kind": "cheek",
            "style": "naturePink",
            "value": 0.3
          },
          {
            "kind": "trimming",
            "style": "europeAmerica",
            "value": 0.5
          },
          {
            "kind": "eyebrow",
            "style": "goddessBrown",
            "value": 0.5
          }
        ]
      }
    }

    返回说明

    返回参数

    种类(kind) 风格(style) 风格值(value) 备注
    err_no 0 Number
    err_msg success String
    image /9j/4RRPRX... String

    错误码

    错误码 含义
    0 成功
    4000 http错误
    4001 json错误
    4002 base64错误
    4020 图片错误,无法读取
    4021 图片格式不支持
    4022 图片太大(分辨率大于8kx8k,或者文件大于30M)
    4023 图片太小(分辨率小于128x128)
    4024 图片质量参数错误(10~100)
    4100 美化参数错误
    5000 服务器错误
    5001 服务繁忙,任务过期

    返回示例:

    {
     "err_no": 0,
     "err_msg": "success",
     "image": "/9j/4RRPRX......",
    }
    上一篇
    虚拟主播视频生产(邀测)
    下一篇
    医美特效API文档