证件照在咱们生活中也是随时都须要的,例如去办证、体检、或者是参加考试等,但不是每一个人都会P图,有些时候并不须要问了一个电子版证件照去照相馆拍照,因此能够利用技术开发一个在线工具,即拍即出图。php
本文使用百度AI开放平台提供的免费人像分割API实现抠图,这点百度是很良心的,看过不少同款API,其余都得花钱,免费体验的次数也就几回、几十次调用,而百度直接就是50000次!何况百度是作AI比较专业的,处理出来的结果很好!html
一、先申请API
https://ai.baidu.com/tech/bod...算法二、建立应用后就能得到API Key和Secret Keyjson
三、开发文档
https://ai.baidu.com/ai-doc/B...数组四、写代码
(1)获取access_token
获取获取access_token文档:https://ai.baidu.com/docs#/Au...缓存
获取获取access_token代码服务器
<?php header("Content-type:application/json"); //初始化 CURL $ch = curl_init(); //目标服务器地址 curl_setopt($ch, CURLOPT_URL, 'https://aip.baidubce.com/oauth/2.0/token'); //设置上传的文件 curl_setopt($ch, CURLOPT_POST, true); $data = array( 'grant_type' => 'client_credentials', 'client_id' => '填写你的', 'client_secret' => '填写你的' ); curl_setopt($ch, CURLOPT_POSTFIELDS, $data); // 对认证证书来源的检查 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); // 从证书中检查SSL加密算法是否存在 curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); //获取的信息以文件流的形式返回,而不是直接输出 curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); //请求头数组 $headers[] = "user-agent:Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3947.100 Safari/537.36"; //设置请求头 curl_setopt($ch, CURLOPT_HTTPHEADER,$headers); //发起请求 $result = curl_exec($ch); echo $result; //关闭请求 curl_close($ch); ?>
图片转base64工具:http://tool.chinaz.com/tools/...app
请求接口,人像分割代码curl
<?php header("Content-type:text/html;charset=utf-8"); //初始化 CURL $ch = curl_init(); //目标服务器地址 curl_setopt($ch, CURLOPT_URL, 'https://aip.baidubce.com/rest/2.0/image-classify/v1/body_seg'); //设置上传的文件 curl_setopt($ch, CURLOPT_POST, true); $data = array( 'access_token' => '上一步获取到的access_token', 'image' => '这里要用base64去掉图片头的base64代码' ); curl_setopt($ch, CURLOPT_POSTFIELDS, $data); // 对认证证书来源的检查 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); // 从证书中检查SSL加密算法是否存在 curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); //获取的信息以文件流的形式返回,而不是直接输出 curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); //请求头数组 $headers[] = "Content-Type:application/x-www-form-urlencoded"; //设置请求头 curl_setopt($ch, CURLOPT_HTTPHEADER,$headers); //发起请求 $result = curl_exec($ch); // 解析json $arr_result = json_decode($result); $imgurl = $arr_result->foreground; // 输出图片 echo "<img src='./8.jpg' style='background:#f00'/>"; echo "<img src='data:image/png;base64,".$imgurl."' style='background:#f00'/><br/>"; echo "<img src='data:image/png;base64,".$imgurl."' style='background:#39f'/>"; echo "<img src='data:image/png;base64,".$imgurl."' style='background:#fff'/>"; //关闭请求 curl_close($ch); ?>
最后就返回了抠图成功的base64图片代码,也是不带图片头的,若是须要展现图片,就得拼接data:image/jpg;base64,就能够了!工具
本文仅仅是作了一个请求流程,若是要作成可用的请求,须要完善图片上传自动转换为base64,而且去掉图片头,自动获取access_token而且缓存(由于有有效期),最后返回多种底色的,固定尺寸的图片json数据。
Author:TANKING
Date:2021-04-25
Web:http://www.likeyun.cnWeChat:sansure2016