php人像分割 人像摳圖 證件照換底色 在線製做證件照API Ai智能摳圖

需求

證件照在咱們生活中也是隨時都須要的,例如去辦證、體檢、或者是參加考試等,但不是每一個人都會P圖,有些時候並不須要問了一個電子版證件照去照相館拍照,因此能夠利用技術開發一個在線工具,即拍即出圖。php

準備

本文使用百度AI開放平臺提供的免費人像分割API實現摳圖,這點百度是很良心的,看過不少同款API,其餘都得花錢,免費體驗的次數也就幾回、幾十次調用,而百度直接就是50000次!何況百度是作AI比較專業的,處理出來的結果很好!html

image.png

一、先申請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

image.png

請求接口,人像分割代碼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

相關文章
相關標籤/搜索