证件照换底色API源码附变现方法

证件照几乎所有人都会用到,不同证件要求的证件照底色也不同,每种底色都去拍一套照片显得十分繁琐,因此P图换底色成为最佳选择。某信与某付宝也有很多证件照换底小程序,付费换底或者查看广告获取下载权限是个不错的变现途径,甚至可以与本地照相馆合作,你出图他出照片,实现换底出照片一条龙服务,韭菜就得收割到底不是?

图片[1]-证件照换底色API源码附变现方法-IT吧

本文使用百度AI开放平台提供的免费人像分割API实现抠图,这点百度是很良心的,看过很多同款API,其他都得花钱,免费体验的次数也就几次、几十次调用,而百度直接就是50000/日限制每秒两次并发!况且百度是做AI比较专业的,处理出来的结果很好!

申请地址:

https://ai.baidu.com/tech/body/seg

申请成功创建应用后就能获得API KeySecret Key,开发文档:https://ai.baidu.com/ai-doc/BODY/Fk3cpyxua

直接上代码,懂的人自然会去看文档。

获取授权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/imgtobase

百度api请求需要去掉base64图片头,即去掉data:image/jpg;base64,

请求代码

<?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);

?>

这里是用css填充底色,下载的时候不会有底色,其实抠出来的图像是透明底色,正确的处理办法应该是使用PHP的GD库画图。关于PHP的GD库的使用请参考文章:PHP纯代码生成WordPress文章海报图片实现分享功能

将css填充的颜色给用户看,GD库生成的图片提供下载,才是最佳搭配!

© 版权声明
THE END
喜欢就支持一下吧
点赞8 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容