您现在的位置是:网站首页>>PHP>>php

使用face++ 实现人像抠图

发布时间:2020-04-13 13:45:01作者:wangjian浏览量:135点赞量:1

    face++文档地址: https://console.faceplusplus.com.cn/documents/4887579

    face++人像抠图接口地址

    https://api-cn.faceplusplus.com/humanbodypp/v2/segment

    参数说明:

    是否必选参数名类型参数说明
    必选api_keystring调用此 API 的 API Key
    必选
    api_secretstring调用此 API 的 API Secret
    必选image_base64stringbase64 编码的二进制图片数据
    可选return_grayscaleint抠像后的返回值,默认为1标识返回灰度图及人像图,0标识仅返回人像图,2只返回灰度图

    返回的参数body_image标识人像抠图的base64图片,简单实现如下,这里我是用的时Yii框架的yiisoft/yii2-httpclient拓展实现

    $url = 'https://api-cn.faceplusplus.com/humanbodypp/v2/segment';
    //post传参
    $img = file_get_contents(XXX);//人像图片
    $img = base64_encode($img);
    $data = [
        'api_key' => 'XXX',//api_key
        'api_secret' => 'XXX',//api_secret
        'image_base64' => $img,
    ];
    $client = new Client();
    $response = $client->createRequest()
        ->setMethod('POST') // 请求方式
        ->setUrl($url)      // 请求地址
        ->setData($data)    //数据传数组
        ->setHeaders(['Content-Type'=>'multipart/form-data']) //header
        ->send();
    if ($response->isOk) {
        //接口返回信息
        $fileName = time() . '.png';
        //保存人像抠图后图片
        file_put_contents($fileName, base64_decode($response->data['body_image']));
        //使用intervention/image拓展给抠图的人像加上背景色
        $img = ImageManagerStatic::make($fileName);
    $img->fill('#64C5FF', 0, 0);
    $img->save('test.jpg');
    } else {
        echo $response->data['error_message'];//错误信息
    }


1 +1