mirror of https://github.com/helloxz/imgurl.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1259 lines
44 KiB
1259 lines
44 KiB
7 years ago
|
<?php
|
||
|
/**
|
||
|
* api defination of QCloud Image.
|
||
|
*/
|
||
|
namespace QcloudImage;
|
||
|
|
||
|
use QcloudImage\HttpClient;
|
||
|
use QcloudImage\Error;
|
||
|
use QcloudImage\Auth;
|
||
|
use QcloudImage\Conf;
|
||
|
|
||
|
class CIClient {
|
||
|
|
||
|
public function __construct($appid, $secretId, $secretKey, $bucket){
|
||
|
$this->bucket = $bucket;
|
||
|
$this->auth = new Auth($appid, $secretId, $secretKey);
|
||
|
$this->http = new HttpClient();
|
||
|
$this->conf = new Conf();
|
||
|
}
|
||
|
public function useHttp() {
|
||
|
return $this->conf->useHttp();
|
||
|
}
|
||
|
public function useHttps() {
|
||
|
return $this->conf->useHttps();
|
||
|
}
|
||
|
public function setTimeout($timeout) {
|
||
|
return $this->conf->setTimeout($timeout);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* 黄图识别
|
||
|
* @param array(associative) $picture 识别的图片
|
||
|
* * @param array(associative) $pictures Person的人脸图片
|
||
|
* urls array: 指定图片的url数组
|
||
|
* files array: 指定图片的路径数组
|
||
|
* 以上两种指定其一即可,如果指定多个,则优先使用urls,其次 files
|
||
|
*
|
||
|
* @return array http请求响应
|
||
|
*/
|
||
|
public function pornDetect($picture) {
|
||
|
|
||
|
if (!$picture || !is_array($picture)) {
|
||
|
return Error::json(Error::$Param, 'param picture must be array');
|
||
|
}
|
||
|
|
||
|
$reqUrl = $this->conf->buildUrl('/detection/pornDetect');
|
||
|
$headers = $this->baseHeaders();
|
||
|
$files = $this->baseParams();
|
||
|
|
||
|
if (isset($picture['urls'])) {
|
||
|
$headers[] = 'Content-Type:application/json';
|
||
|
$files['url_list'] = $picture['urls'];
|
||
|
|
||
|
$data = json_encode($files);
|
||
|
} else if (isset($picture['files'])){
|
||
|
$index = 0;
|
||
|
|
||
|
foreach ($picture['files'] as $file) {
|
||
|
if(PATH_SEPARATOR==';'){ // WIN OS
|
||
|
$path = iconv("UTF-8","gb2312//IGNORE",$file);
|
||
|
} else {
|
||
|
$path = $file;
|
||
|
}
|
||
|
|
||
|
$path = realpath($path);
|
||
|
if (!file_exists($path)) {
|
||
|
return Error::json(Error::$FilePath, 'file '.$file.' not exist');
|
||
|
}
|
||
|
|
||
|
if (function_exists('curl_file_create')) {
|
||
|
$files["image[$index]"] = curl_file_create($path);
|
||
|
} else {
|
||
|
$files["image[$index]"] = '@'.($path);
|
||
|
}
|
||
|
$index++;
|
||
|
}
|
||
|
|
||
|
$data = $files;
|
||
|
} else {
|
||
|
return Error::json(Error::$Param, 'param picture is illegal');
|
||
|
}
|
||
|
|
||
|
return $this->doRequest(array(
|
||
|
'url' => $reqUrl,
|
||
|
'method' => 'POST',
|
||
|
'data' => $data,
|
||
|
'header' => $headers,
|
||
|
'timeout' => $this->conf->timeout()
|
||
|
));
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* 标签识别
|
||
|
* @param array(associative) $picture 识别的图片
|
||
|
* * @param array(associative) $picture
|
||
|
* url array: 指定图片的url数组
|
||
|
* file array: 指定图片的路径数组
|
||
|
* buffer string: 指定图片的内容
|
||
|
* 以上三种指定其一即可,如果指定多个,则优先使用url,其次 file,再次 buffer。
|
||
|
*
|
||
|
* @return array http请求响应
|
||
|
*/
|
||
|
public function tagDetect($picture) {
|
||
|
|
||
|
if (!$picture || !is_array($picture)) {
|
||
|
return Error::json(Error::$Param, 'param picture must be array');
|
||
|
}
|
||
|
|
||
|
$reqUrl = $this->conf->buildUrl('/v1/detection/imagetag_detect');
|
||
|
$headers = $this->baseHeaders();
|
||
|
$headers[] = 'Content-Type:application/json';
|
||
|
$files = $this->baseParams();
|
||
|
|
||
|
if (isset($picture['url'])) {
|
||
|
$files['url'] = $picture['url'];
|
||
|
} else if (isset($picture['file'])) {
|
||
|
if(PATH_SEPARATOR==';') { // WIN OS
|
||
|
$path = iconv("UTF-8","gb2312//IGNORE",$picture['file']);
|
||
|
} else {
|
||
|
$path = $picture['file'];
|
||
|
}
|
||
|
|
||
|
$filePath = realpath($path);
|
||
|
if (! file_exists($filePath)) {
|
||
|
return Error::json(Error::$FilePath, 'file '.$picture['file'].' not exist');
|
||
|
}
|
||
|
|
||
|
$files['image'] = base64_encode(file_get_contents($filePath));
|
||
|
} else if (isset($picture['buffer'])) {
|
||
|
$files['image'] = base64_encode($picture['buffer']);
|
||
|
} else {
|
||
|
return Error::json(Error::$Param, 'param picture is illegal');
|
||
|
}
|
||
|
|
||
|
$data = json_encode($files);
|
||
|
return $this->doRequest(array(
|
||
|
'url' => $reqUrl,
|
||
|
'method' => 'POST',
|
||
|
'data' => $data,
|
||
|
'header' => $headers,
|
||
|
'timeout' => $this->conf->timeout()
|
||
|
));
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* 身份证识别
|
||
|
* @param array(associative) $picture 识别的图片
|
||
|
* * @param array(associative) $pictures Person的人脸图片
|
||
|
* urls array: 指定图片的url数组
|
||
|
* files array: 指定图片的路径数组
|
||
|
* buffers array: 指定图片的内容
|
||
|
* 以上三种指定其一即可,如果指定多个,则优先使用urls,其次 files,最后buffers
|
||
|
* @param $cardType int 0为身份证有照片的一面,1为身份证有国徽的一面
|
||
|
* @return array http请求响应
|
||
|
*/
|
||
|
public function idcardDetect($picture, $cardType=0) {
|
||
|
|
||
|
if (!$picture || !is_array($picture)) {
|
||
|
return Error::json(Error::$Param, 'param picture must be array');
|
||
|
}
|
||
|
|
||
|
if ($cardType !== 0 && $cardType !== 1) {
|
||
|
return Error::json(Error::$Param, 'param cardType error');
|
||
|
}
|
||
|
|
||
|
$reqUrl = $this->conf->buildUrl('/ocr/idcard');
|
||
|
$headers = $this->baseHeaders();
|
||
|
$files = $this->baseParams();
|
||
|
$files['card_type'] = $cardType;
|
||
|
if (isset($picture['urls'])) {
|
||
|
$headers[] = 'Content-Type:application/json';
|
||
|
$files['url_list'] = $picture['urls'];
|
||
|
|
||
|
$data = json_encode($files);
|
||
|
} else if (isset($picture['files'])){
|
||
|
$index = 0;
|
||
|
|
||
|
foreach ($picture['files'] as $file) {
|
||
|
if(PATH_SEPARATOR==';'){ // WIN OS
|
||
|
$path = iconv("UTF-8","gb2312//IGNORE",$file);
|
||
|
} else {
|
||
|
$path = $file;
|
||
|
}
|
||
|
|
||
|
$path = realpath($path);
|
||
|
if (!file_exists($path)) {
|
||
|
return Error::json(Error::$FilePath, 'file '.$file.' not exist');
|
||
|
}
|
||
|
|
||
|
if (function_exists('curl_file_create')) {
|
||
|
$files["image[$index]"] = curl_file_create($path);
|
||
|
} else {
|
||
|
$files["image[$index]"] = '@'.($path);
|
||
|
}
|
||
|
$index++;
|
||
|
}
|
||
|
|
||
|
$data = $files;
|
||
|
} else if (isset($picture['buffers'])){
|
||
|
$index = 0;
|
||
|
|
||
|
foreach ($picture['buffers'] as $buffer) {
|
||
|
$files["image[$index]"] = $buffer;
|
||
|
|
||
|
$index++;
|
||
|
}
|
||
|
|
||
|
$data = $files;
|
||
|
} else {
|
||
|
return Error::json(Error::$Param, 'param picture is illegal');
|
||
|
}
|
||
|
|
||
|
return $this->doRequest(array(
|
||
|
'url' => $reqUrl,
|
||
|
'method' => 'POST',
|
||
|
'data' => $data,
|
||
|
'header' => $headers,
|
||
|
'timeout' => $this->conf->timeout()
|
||
|
));
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* 名片识别
|
||
|
* @param array(associative) $picture 识别的图片
|
||
|
* * @param array(associative) $pictures Person的人脸图片
|
||
|
* urls array: 指定图片的url数组
|
||
|
* files array: 指定图片的路径数组
|
||
|
* buffers array: 指定图片的内容
|
||
|
* 以上三种指定其一即可,如果指定多个,则优先使用urls,其次 files,最后buffers
|
||
|
* @param retImage int 0不返回图片,1返回图片
|
||
|
* @return array http请求响应
|
||
|
*/
|
||
|
public function namecardDetect($picture, $retImage=0) {
|
||
|
|
||
|
if (!$picture || !is_array($picture)) {
|
||
|
return Error::json(Error::$Param, 'param picture must be array');
|
||
|
}
|
||
|
|
||
|
if ($retImage !== 0 && $retImage !== 1) {
|
||
|
return Error::json(Error::$Param, 'param retImage error');
|
||
|
}
|
||
|
|
||
|
$reqUrl = $this->conf->buildUrl('/ocr/namecard');
|
||
|
$headers = $this->baseHeaders();
|
||
|
$files = $this->baseParams();
|
||
|
$files['ret_image'] = $retImage;
|
||
|
if (isset($picture['urls'])) {
|
||
|
$headers[] = 'Content-Type:application/json';
|
||
|
$files['url_list'] = $picture['urls'];
|
||
|
|
||
|
$data = json_encode($files);
|
||
|
} else if (isset($picture['files'])){
|
||
|
$index = 0;
|
||
|
|
||
|
foreach ($picture['files'] as $file) {
|
||
|
if(PATH_SEPARATOR==';'){ // WIN OS
|
||
|
$path = iconv("UTF-8","gb2312//IGNORE",$file);
|
||
|
} else {
|
||
|
$path = $file;
|
||
|
}
|
||
|
|
||
|
$path = realpath($path);
|
||
|
if (!file_exists($path)) {
|
||
|
return Error::json(Error::$FilePath, 'file '.$file.' not exist');
|
||
|
}
|
||
|
|
||
|
if (function_exists('curl_file_create')) {
|
||
|
$files["image[$index]"] = curl_file_create($path);
|
||
|
} else {
|
||
|
$files["image[$index]"] = '@'.($path);
|
||
|
}
|
||
|
$index++;
|
||
|
}
|
||
|
|
||
|
$data = $files;
|
||
|
} else if (isset($picture['buffers'])){
|
||
|
$index = 0;
|
||
|
|
||
|
foreach ($picture['buffers'] as $buffer) {
|
||
|
$files["image[$index]"] = $buffer;
|
||
|
|
||
|
$index++;
|
||
|
}
|
||
|
|
||
|
$data = $files;
|
||
|
} else {
|
||
|
return Error::json(Error::$Param, 'param picture is illegal');
|
||
|
}
|
||
|
|
||
|
return $this->doRequest(array(
|
||
|
'url' => $reqUrl,
|
||
|
'method' => 'POST',
|
||
|
'data' => $data,
|
||
|
'header' => $headers,
|
||
|
'timeout' => $this->conf->timeout()
|
||
|
));
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* 创建Person
|
||
|
* @param string $personId 创建的Person的ID
|
||
|
* @param array $groupIds 创建的Person需要加入的Group
|
||
|
* @param array(associative) $picture 创建的Person的人脸图片
|
||
|
* url string: 指定图片的url
|
||
|
* file string: 指定图片的路径
|
||
|
* buffer string: 指定图片的内容
|
||
|
* 以上三种指定其一即可,如果指定多个,则优先使用url,其次 file,再次 buffer。
|
||
|
* @param string $personName 创建的Person的名字
|
||
|
* @param string $tag 为创建的Person打标签
|
||
|
*
|
||
|
* @return array http请求响应
|
||
|
*/
|
||
|
public function faceNewPerson($personId, $groupIds, $picture, $personName=NULL, $tag=NULL) {
|
||
|
|
||
|
if (! is_array($groupIds)) {
|
||
|
return Error::json(Error::$Param, 'param groupIds must be array');
|
||
|
}
|
||
|
if (! is_array($picture)) {
|
||
|
return Error::json(Error::$Param, 'param picture must be array');
|
||
|
}
|
||
|
|
||
|
$reqUrl = $this->conf->buildUrl('/face/newperson');
|
||
|
$headers = $this->baseHeaders();
|
||
|
$files = $this->baseParams();
|
||
|
$files['person_id'] = strval($personId);
|
||
|
if ($personName) {
|
||
|
$files['person_name'] = strval($personName);
|
||
|
}
|
||
|
if ($tag) {
|
||
|
$files['tag'] = strval($tag);
|
||
|
}
|
||
|
if (isset($picture['url'])) {
|
||
|
$headers[] = 'Content-Type:application/json';
|
||
|
$files['group_ids'] = $groupIds;
|
||
|
$files['url'] = $picture['url'];
|
||
|
$data = json_encode($files);
|
||
|
} else {
|
||
|
$index = 0;
|
||
|
foreach ($groupIds as $groupId) {
|
||
|
$files["group_ids[".strval($index++)."]"] = strval($groupId);
|
||
|
}
|
||
|
|
||
|
if (isset($picture['file'])) {
|
||
|
if(PATH_SEPARATOR==';'){ // WIN OS
|
||
|
$path = iconv("UTF-8","gb2312//IGNORE",$picture['file']);
|
||
|
} else {
|
||
|
$path = $picture['file'];
|
||
|
}
|
||
|
|
||
|
$filePath = realpath($path);
|
||
|
|
||
|
if (! file_exists($filePath)) {
|
||
|
return Error::json(Error::$FilePath, 'file '.$picture['file'].' not exist');
|
||
|
}
|
||
|
|
||
|
if (function_exists('curl_file_create')) {
|
||
|
$files['image'] = curl_file_create($filePath);
|
||
|
} else {
|
||
|
$files['image'] = '@' . $filePath;
|
||
|
}
|
||
|
} else if (isset($picture['buffer'])) {
|
||
|
$files['image'] = $picture['buffer'];
|
||
|
} else {
|
||
|
return Error::json(Error::$Param, 'param picture is illegal');
|
||
|
}
|
||
|
$data = $files;
|
||
|
}
|
||
|
return $this->doRequest(array(
|
||
|
'url' => $reqUrl,
|
||
|
'method' => 'POST',
|
||
|
'data' => $data,
|
||
|
'header' => $headers,
|
||
|
'timeout' => $this->conf->timeout()
|
||
|
));
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* 删除Person
|
||
|
* @param string $personId 删除的Person的ID
|
||
|
*
|
||
|
* @return array http请求响应
|
||
|
*/
|
||
|
public function faceDelPerson($personId) {
|
||
|
$reqUrl = $this->conf->buildUrl('/face/delperson');
|
||
|
$headers = $this->baseHeaders();
|
||
|
$headers[] = 'Content-Type:application/json';
|
||
|
$files = $this->baseParams();
|
||
|
$files['person_id'] = strval($personId);
|
||
|
|
||
|
return $this->doRequest(array(
|
||
|
'url' => $reqUrl,
|
||
|
'method' => 'POST',
|
||
|
'data' => json_encode($files),
|
||
|
'header' => $headers,
|
||
|
'timeout' => $this->conf->timeout()
|
||
|
));
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* 为Person 添加人脸
|
||
|
* @param string $personId 创建的Person的ID
|
||
|
* @param array(associative) $pictures Person的人脸图片
|
||
|
* urls array: 指定图片的url数组
|
||
|
* files array: 指定图片的路径数组
|
||
|
* buffers array: 指定图片的内容数组
|
||
|
* 以上三种指定其一即可,如果指定多个,则优先使用urls,其次 files,再次 buffers。
|
||
|
* @param string $tag 为face打标签
|
||
|
*
|
||
|
* @return array http请求响应
|
||
|
*/
|
||
|
public function faceAddFace($personId, $pictures, $tag=NULL) {
|
||
|
if (! is_array($pictures)) {
|
||
|
return Error::json(Error::$Param, 'param picture must be array');
|
||
|
}
|
||
|
|
||
|
$reqUrl = $this->conf->buildUrl('/face/addface');
|
||
|
$headers = $this->baseHeaders();
|
||
|
$files = $this->baseParams();
|
||
|
$files['person_id'] = strval($personId);
|
||
|
if ($tag) {
|
||
|
$files['tag'] = strval($tag);
|
||
|
}
|
||
|
if (isset($pictures['urls']) && is_array($pictures['urls'])) {
|
||
|
$headers[] = 'Content-Type:application/json';
|
||
|
$files['urls'] = $pictures['urls'];
|
||
|
$data = json_encode($files);
|
||
|
} else {
|
||
|
if (isset($pictures['files']) && is_array($pictures['files'])) {
|
||
|
$index = 0;
|
||
|
foreach ($pictures['files'] as $picture) {
|
||
|
if(PATH_SEPARATOR==';'){ // WIN OS
|
||
|
$path = iconv("UTF-8","gb2312//IGNORE",$picture);
|
||
|
} else {
|
||
|
$path = $picture;
|
||
|
}
|
||
|
|
||
|
$filePath = realpath($path);
|
||
|
if (! file_exists($filePath)) {
|
||
|
return Error::json(Error::$FilePath, 'file '.$picture.' not exist');
|
||
|
}
|
||
|
|
||
|
if (function_exists('curl_file_create')) {
|
||
|
$files["images[$index]"] = curl_file_create($filePath);
|
||
|
} else {
|
||
|
$files["images[$index]"] = '@' . $filePath;
|
||
|
}
|
||
|
$index ++;
|
||
|
}
|
||
|
} else if (isset($pictures['buffers']) && is_array($pictures['buffers'])) {
|
||
|
$index = 0;
|
||
|
foreach ($pictures['buffers'] as $buffer) {
|
||
|
$files["images[".$index++."]"] = $buffer;
|
||
|
}
|
||
|
} else {
|
||
|
return Error::json(Error::$Param, 'param pictures is illegal');
|
||
|
}
|
||
|
$data = $files;
|
||
|
}
|
||
|
|
||
|
return $this->doRequest(array(
|
||
|
'url' => $reqUrl,
|
||
|
'method' => 'POST',
|
||
|
'data' => $data,
|
||
|
'header' => $headers,
|
||
|
'timeout' => $this->conf->timeout()
|
||
|
));
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* 删除face
|
||
|
* @param string $personId 操作的Person的ID
|
||
|
* @param array $faceIds 删除的face的ID数组
|
||
|
*
|
||
|
* @return array http请求响应
|
||
|
*/
|
||
|
public function faceDelFace($personId, $faceIds) {
|
||
|
|
||
|
if (! is_array($faceIds)) {
|
||
|
return Error::json(Error::$Param, 'param faceIds must be array');
|
||
|
}
|
||
|
$reqUrl = $this->conf->buildUrl('/face/delface');
|
||
|
$headers = $this->baseHeaders();
|
||
|
$headers[] = 'Content-Type:application/json';
|
||
|
$files = $this->baseParams();
|
||
|
$files['person_id'] = strval($personId);
|
||
|
$files['face_ids'] = $faceIds;
|
||
|
|
||
|
return $this->doRequest(array(
|
||
|
'url' => $reqUrl,
|
||
|
'method' => 'POST',
|
||
|
'data' => json_encode($files),
|
||
|
'header' => $headers,
|
||
|
'timeout' => $this->conf->timeout()
|
||
|
));
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* 设置信息
|
||
|
* @param string $personId 操作的Person的ID
|
||
|
* @param string $personName Person的名字
|
||
|
* @param string $tag 为Person打标签
|
||
|
*
|
||
|
* @return array http请求响应
|
||
|
*/
|
||
|
public function faceSetInfo($personId, $personName=NULL, $tag=NULL) {
|
||
|
$reqUrl = $this->conf->buildUrl('/face/setinfo');
|
||
|
$headers = $this->baseHeaders();
|
||
|
$headers[] = 'Content-Type:application/json';
|
||
|
$files = $this->baseParams();
|
||
|
$files['person_id'] = strval($personId);
|
||
|
if ($personName) {
|
||
|
$files['person_name'] = strval($personName);
|
||
|
}
|
||
|
if ($tag) {
|
||
|
$files['tag'] = strval($tag);
|
||
|
}
|
||
|
|
||
|
return $this->doRequest(array(
|
||
|
'url' => $reqUrl,
|
||
|
'method' => 'POST',
|
||
|
'data' => json_encode($files),
|
||
|
'header' => $headers,
|
||
|
'timeout' => $this->conf->timeout()
|
||
|
));
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* 获取信息
|
||
|
* @param string $personId 操作的Person的ID
|
||
|
*
|
||
|
* @return array http请求响应
|
||
|
*/
|
||
|
public function faceGetInfo($personId) {
|
||
|
$reqUrl = $this->conf->buildUrl('/face/getinfo');
|
||
|
$headers = $this->baseHeaders();
|
||
|
$headers[] = 'Content-Type:application/json';
|
||
|
$files = $this->baseParams();
|
||
|
$files['person_id'] = strval($personId);
|
||
|
|
||
|
return $this->doRequest(array(
|
||
|
'url' => $reqUrl,
|
||
|
'method' => 'POST',
|
||
|
'data' => json_encode($files),
|
||
|
'header' => $headers,
|
||
|
'timeout' => $this->conf->timeout()
|
||
|
));
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* 获取app下的组列表
|
||
|
*
|
||
|
* @return array http请求响应
|
||
|
*/
|
||
|
public function faceGetGroupIds() {
|
||
|
$reqUrl = $this->conf->buildUrl('/face/getgroupids');
|
||
|
$headers = $this->baseHeaders();
|
||
|
$headers[] = 'Content-Type:application/json';
|
||
|
$files = $this->baseParams();
|
||
|
|
||
|
return $this->doRequest(array(
|
||
|
'url' => $reqUrl,
|
||
|
'method' => 'POST',
|
||
|
'data' => json_encode($files),
|
||
|
'header' => $headers,
|
||
|
'timeout' => $this->conf->timeout()
|
||
|
));
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* 获取group下的person列表
|
||
|
* @param string $groupId 操作的GroupID
|
||
|
*
|
||
|
* @return array http请求响应
|
||
|
*/
|
||
|
public function faceGetPersonIds($groupId) {
|
||
|
$reqUrl = $this->conf->buildUrl('/face/getpersonids');
|
||
|
$headers = $this->baseHeaders();
|
||
|
$headers[] = 'Content-Type:application/json';
|
||
|
$files = $this->baseParams();
|
||
|
$files['group_id'] = strval($groupId);
|
||
|
|
||
|
return $this->doRequest(array(
|
||
|
'url' => $reqUrl,
|
||
|
'method' => 'POST',
|
||
|
'data' => json_encode($files),
|
||
|
'header' => $headers,
|
||
|
'timeout' => $this->conf->timeout()
|
||
|
));
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* 获取person的face列表
|
||
|
* @param string $personId 操作的Person的ID
|
||
|
*
|
||
|
* @return array http请求响应
|
||
|
*/
|
||
|
public function faceGetFaceIds($personId) {
|
||
|
$reqUrl = $this->conf->buildUrl('/face/getfaceids');
|
||
|
$headers = $this->baseHeaders();
|
||
|
$headers[] = 'Content-Type:application/json';
|
||
|
$files = $this->baseParams();
|
||
|
$files['person_id'] = strval($personId);
|
||
|
|
||
|
return $this->doRequest(array(
|
||
|
'url' => $reqUrl,
|
||
|
'method' => 'POST',
|
||
|
'data' => json_encode($files),
|
||
|
'header' => $headers,
|
||
|
'timeout' => $this->conf->timeout()
|
||
|
));
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* 获取face的信息
|
||
|
* @param string $faceId 操作的FaceID
|
||
|
*
|
||
|
* @return array http请求响应
|
||
|
*/
|
||
|
public function faceGetFaceInfo($faceId) {
|
||
|
$reqUrl = $this->conf->buildUrl('/face/getfaceinfo');
|
||
|
$headers = $this->baseHeaders();
|
||
|
$headers[] = 'Content-Type:application/json';
|
||
|
$files = $this->baseParams();
|
||
|
$files['face_id'] = strval($faceId);
|
||
|
|
||
|
return $this->doRequest(array(
|
||
|
'url' => $reqUrl,
|
||
|
'method' => 'POST',
|
||
|
'data' => json_encode($files),
|
||
|
'header' => $headers,
|
||
|
'timeout' => $this->conf->timeout()
|
||
|
));
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* 识别指定的图片属于哪个人
|
||
|
* @param array $groupId 需要对比的GroupId
|
||
|
* @param array(associative) $picture Person的人脸图片
|
||
|
* url string: 指定图片的url
|
||
|
* file string: 指定图片的路径
|
||
|
* buffer string: 指定图片的内容
|
||
|
* 以上三种指定其一即可,如果指定多个,则优先使用url,其次 file,再次 buffer。
|
||
|
*
|
||
|
* @return array http请求响应
|
||
|
*/
|
||
|
public function faceIdentify($groupId, $picture) {
|
||
|
if (! is_array($picture)) {
|
||
|
return Error::json(Error::$Param, 'param picture must be array');
|
||
|
}
|
||
|
|
||
|
$reqUrl = $this->conf->buildUrl('/face/identify');
|
||
|
$headers = $this->baseHeaders();
|
||
|
$files = $this->baseParams();
|
||
|
$files['group_id'] = strval($groupId);
|
||
|
if (isset($picture['url'])) {
|
||
|
$headers[] = 'Content-Type:application/json';
|
||
|
$files['url'] = $picture['url'];
|
||
|
$data = json_encode($files);
|
||
|
} else {
|
||
|
if (isset($picture['file'])) {
|
||
|
if(PATH_SEPARATOR==';'){ // WIN OS
|
||
|
$path = iconv("UTF-8","gb2312//IGNORE",$picture['file']);
|
||
|
} else {
|
||
|
$path = $picture['file'];
|
||
|
}
|
||
|
|
||
|
$filePath = realpath($path);
|
||
|
if (! file_exists($filePath)) {
|
||
|
return Error::json(Error::$FilePath, 'file '.$picture['file'].' not exist');
|
||
|
}
|
||
|
|
||
|
if (function_exists('curl_file_create')) {
|
||
|
$files['image'] = curl_file_create($filePath);
|
||
|
} else {
|
||
|
$files['image'] = '@' . $filePath;
|
||
|
}
|
||
|
} else if (isset($picture['buffer'])) {
|
||
|
$files['image'] = $picture['buffer'];
|
||
|
} else {
|
||
|
return Error::json(Error::$Param, 'param picture is illegal');
|
||
|
}
|
||
|
$data = $files;
|
||
|
}
|
||
|
|
||
|
return $this->doRequest(array(
|
||
|
'url' => $reqUrl,
|
||
|
'method' => 'POST',
|
||
|
'data' => $data,
|
||
|
'header' => $headers,
|
||
|
'timeout' => $this->conf->timeout()
|
||
|
));
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* 识别指定的图片是不是指定的person
|
||
|
* @param array $personId 需要对比的person
|
||
|
* @param array(associative) $picture 人脸图片
|
||
|
* url string: 指定图片的url
|
||
|
* file string: 指定图片的路径
|
||
|
* buffer string: 指定图片的内容
|
||
|
* 以上三种指定其一即可,如果指定多个,则优先使用url,其次 file,再次 buffer。
|
||
|
*
|
||
|
* @return array http请求响应
|
||
|
*/
|
||
|
public function faceVerify($personId, $picture) {
|
||
|
if (! is_array($picture)) {
|
||
|
return Error::json(Error::$Param, 'param picture must be array');
|
||
|
}
|
||
|
|
||
|
$reqUrl = $this->conf->buildUrl('/face/verify');
|
||
|
$headers = $this->baseHeaders();
|
||
|
$files = $this->baseParams();
|
||
|
$files['person_id'] = strval($personId);
|
||
|
if (isset($picture['url'])) {
|
||
|
$headers[] = 'Content-Type:application/json';
|
||
|
$files['url'] = $picture['url'];
|
||
|
$data = json_encode($files);
|
||
|
} else {
|
||
|
if (isset($picture['file'])) {
|
||
|
if(PATH_SEPARATOR==';'){ // WIN OS
|
||
|
$path = iconv("UTF-8","gb2312//IGNORE",$picture['file']);
|
||
|
} else {
|
||
|
$path = $picture['file'];
|
||
|
}
|
||
|
|
||
|
$filePath = realpath($path);
|
||
|
if (! file_exists($filePath)) {
|
||
|
return Error::json(Error::$FilePath, 'file '.$picture['file'].' not exist');
|
||
|
}
|
||
|
|
||
|
if (function_exists('curl_file_create')) {
|
||
|
$files['image'] = curl_file_create($filePath);
|
||
|
} else {
|
||
|
$files['image'] = '@' . $filePath;
|
||
|
}
|
||
|
} else if (isset($picture['buffer'])) {
|
||
|
$files['image'] = $picture['buffer'];
|
||
|
} else {
|
||
|
return Error::json(Error::$Param, 'param picture is illegal');
|
||
|
}
|
||
|
$data = $files;
|
||
|
}
|
||
|
|
||
|
return $this->doRequest(array(
|
||
|
'url' => $reqUrl,
|
||
|
'method' => 'POST',
|
||
|
'data' => $data,
|
||
|
'header' => $headers,
|
||
|
'timeout' => $this->conf->timeout()
|
||
|
));
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* 对比两张图片是否是同一个人
|
||
|
* @param array(associative) $pictureA 人脸图片
|
||
|
* url string: 指定图片的url
|
||
|
* file string: 指定图片的路径
|
||
|
* buffer string: 指定图片的内容
|
||
|
* 以上三种指定其一即可,如果指定多个,则优先使用url,其次 file,再次 buffer。
|
||
|
* @param array(associative) $pictureB 人脸图片
|
||
|
* url string: 指定图片的url
|
||
|
* file string: 指定图片的路径
|
||
|
* buffer string: 指定图片的内容
|
||
|
* 以上三种指定其一即可,如果指定多个,则优先使用url,其次 file,再次 buffer。
|
||
|
*
|
||
|
* @return array http请求响应
|
||
|
*/
|
||
|
public function faceCompare($pictureA, $pictureB) {
|
||
|
if (! is_array($pictureA)) {
|
||
|
return Error::json(Error::$Param, 'param pictureA must be array');
|
||
|
}
|
||
|
if (! is_array($pictureB)) {
|
||
|
return Error::json(Error::$Param, 'param pictureB must be array');
|
||
|
}
|
||
|
|
||
|
$reqUrl = $this->conf->buildUrl('/face/compare');
|
||
|
$headers = $this->baseHeaders();
|
||
|
$files = $this->baseParams();
|
||
|
|
||
|
if (isset($pictureA['url'])) {
|
||
|
$files['urlA'] = $pictureA['url'];
|
||
|
} else if (isset($pictureA['file'])) {
|
||
|
if(PATH_SEPARATOR==';'){ // WIN OS
|
||
|
$path = iconv("UTF-8","gb2312//IGNORE",$pictureA['file']);
|
||
|
} else {
|
||
|
$path = $pictureA['file'];
|
||
|
}
|
||
|
|
||
|
$filePath = realpath($path);
|
||
|
if (! file_exists($filePath)) {
|
||
|
return Error::json(Error::$FilePath, 'file '.$pictureA['file'].' not exist');
|
||
|
}
|
||
|
|
||
|
if (function_exists('curl_file_create')) {
|
||
|
$files['imageA'] = curl_file_create($filePath);
|
||
|
} else {
|
||
|
$files['imageA'] = '@' . $filePath;
|
||
|
}
|
||
|
} else if (isset($pictureA['buffer'])) {
|
||
|
$files['imageA'] = $pictureA['buffer'];
|
||
|
} else {
|
||
|
return Error::json(Error::$Param, 'param pictureA is illegal');
|
||
|
}
|
||
|
|
||
|
if (isset($pictureB['url'])) {
|
||
|
$files['urlB'] = $pictureB['url'];
|
||
|
} else if (isset($pictureB['file'])) {
|
||
|
$filePath = realpath($pictureB['file']);
|
||
|
if(PATH_SEPARATOR==';'){ // WIN OS
|
||
|
$path = iconv("UTF-8","gb2312//IGNORE",$pictureB['file']);
|
||
|
} else {
|
||
|
$path = $pictureB['file'];
|
||
|
}
|
||
|
|
||
|
$filePath = realpath($path);
|
||
|
if (! file_exists($filePath)) {
|
||
|
return Error::json(Error::$FilePath, 'file '.$pictureB['file'].' not exist');
|
||
|
}
|
||
|
|
||
|
if (function_exists('curl_file_create')) {
|
||
|
$files['imageB'] = curl_file_create($filePath);
|
||
|
} else {
|
||
|
$files['imageB'] = '@' . $filePath;
|
||
|
}
|
||
|
} else if (isset($pictureB['buffer'])) {
|
||
|
$files['imageB'] = $pictureB['buffer'];
|
||
|
} else {
|
||
|
return Error::json(Error::$Param, 'param pictureB is illegal');
|
||
|
}
|
||
|
|
||
|
if (isset($pictureA['url']) && isset($pictureB['ur'])) {
|
||
|
$headers[] = 'Content-Type:application/json';
|
||
|
$data = json_encode($files);
|
||
|
} else {
|
||
|
$data = $files;
|
||
|
}
|
||
|
|
||
|
return $this->doRequest(array(
|
||
|
'url' => $reqUrl,
|
||
|
'method' => 'POST',
|
||
|
'data' => $data,
|
||
|
'header' => $headers,
|
||
|
'timeout' => $this->conf->timeout()
|
||
|
));
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* 检测图中的人脸
|
||
|
* @param array(associative) $picture 人脸图片
|
||
|
* url string: 指定图片的url
|
||
|
* file string: 指定图片的路径
|
||
|
* buffer string: 指定图片的内容
|
||
|
* 以上三种指定其一即可,如果指定多个,则优先使用url,其次 file,再次 buffer。
|
||
|
* @param int $mode 检测模式,0为检测所有人脸,1为检测最大的人脸
|
||
|
*
|
||
|
* @return array http请求响应
|
||
|
*/
|
||
|
public function faceDetect($picture, $mode=0) {
|
||
|
if (! is_array($picture)) {
|
||
|
return Error::json(Error::$Param, 'param picture must be array');
|
||
|
}
|
||
|
if ($mode !== 0 && $mode !== 1) {
|
||
|
return Error::json(Error::$Param, 'param mode error');
|
||
|
}
|
||
|
|
||
|
$reqUrl = $this->conf->buildUrl('/face/detect');
|
||
|
$headers = $this->baseHeaders();
|
||
|
$files = $this->baseParams();
|
||
|
if (isset($picture['url'])) {
|
||
|
$headers[] = 'Content-Type:application/json';
|
||
|
$files['mode'] = $mode;
|
||
|
$files['url'] = $picture['url'];
|
||
|
$data = json_encode($files);
|
||
|
} else {
|
||
|
$files['mode'] = strval($mode);
|
||
|
if (isset($picture['file'])) {
|
||
|
if(PATH_SEPARATOR==';'){ // WIN OS
|
||
|
$path = iconv("UTF-8","gb2312//IGNORE",$picture['file']);
|
||
|
} else {
|
||
|
$path = $picture['file'];
|
||
|
}
|
||
|
|
||
|
$filePath = realpath($path);
|
||
|
|
||
|
if (! file_exists($filePath)) {
|
||
|
return Error::json(Error::$FilePath, 'file '.$picture['file'].' not exist');
|
||
|
}
|
||
|
|
||
|
if (function_exists('curl_file_create')) {
|
||
|
$files['image'] = curl_file_create($filePath);
|
||
|
} else {
|
||
|
$files['image'] = '@' . $filePath;
|
||
|
}
|
||
|
} else if (isset($picture['buffer'])) {
|
||
|
$files['image'] = $picture['buffer'];
|
||
|
} else {
|
||
|
return Error::json(Error::$Param, 'param picture is illegal');
|
||
|
}
|
||
|
$data = $files;
|
||
|
}
|
||
|
|
||
|
return $this->doRequest(array(
|
||
|
'url' => $reqUrl,
|
||
|
'method' => 'POST',
|
||
|
'data' => $data,
|
||
|
'header' => $headers,
|
||
|
'timeout' => $this->conf->timeout()
|
||
|
));
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* 定位图中人脸的五官信息
|
||
|
* @param array(associative) $picture 人脸图片
|
||
|
* url string: 指定图片的url
|
||
|
* file string: 指定图片的路径
|
||
|
* buffer string: 指定图片的内容
|
||
|
* 以上三种指定其一即可,如果指定多个,则优先使用url,其次 file,再次 buffer。
|
||
|
* @param int $mode 检测模式,0为检测所有人脸,1为检测最大的人脸
|
||
|
*
|
||
|
* @return array http请求响应
|
||
|
*/
|
||
|
public function faceShape($picture, $mode=0) {
|
||
|
|
||
|
if (! is_array($picture)) {
|
||
|
return Error::json(Error::$Param, 'param picture must be array');
|
||
|
}
|
||
|
if ($mode !== 0 && $mode !== 1) {
|
||
|
return Error::json(Error::$Param, 'param mode error');
|
||
|
}
|
||
|
|
||
|
$reqUrl = $this->conf->buildUrl('/face/shape');
|
||
|
$headers = $this->baseHeaders();
|
||
|
$files = $this->baseParams();
|
||
|
if (isset($picture['url'])) {
|
||
|
$headers[] = 'Content-Type:application/json';
|
||
|
$files['mode'] = $mode;
|
||
|
$files['url'] = $picture['url'];
|
||
|
$data = json_encode($files);
|
||
|
} else {
|
||
|
$files['mode'] = strval($mode);
|
||
|
if (isset($picture['file'])) {
|
||
|
if(PATH_SEPARATOR==';'){ // WIN OS
|
||
|
$path = iconv("UTF-8","gb2312//IGNORE",$picture['file']);
|
||
|
} else {
|
||
|
$path = $picture['file'];
|
||
|
}
|
||
|
|
||
|
$filePath = realpath($path);
|
||
|
if (! file_exists($filePath)) {
|
||
|
return Error::json(Error::$FilePath, 'file '.$picture['file'].' not exist');
|
||
|
}
|
||
|
|
||
|
if (function_exists('curl_file_create')) {
|
||
|
$files['image'] = curl_file_create($filePath);
|
||
|
} else {
|
||
|
$files['image'] = '@' . $filePath;
|
||
|
}
|
||
|
} else if (isset($picture['buffer'])) {
|
||
|
$files['image'] = $picture['buffer'];
|
||
|
} else {
|
||
|
return Error::json(Error::$Param, 'param picture is illegal');
|
||
|
}
|
||
|
$data = $files;
|
||
|
}
|
||
|
|
||
|
return $this->doRequest(array(
|
||
|
'url' => $reqUrl,
|
||
|
'method' => 'POST',
|
||
|
'data' => $data,
|
||
|
'header' => $headers,
|
||
|
'timeout' => $this->conf->timeout()
|
||
|
));
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* 检测图片中的人和给定的信息是否匹配
|
||
|
* @param string $idcardNumber 身份证号
|
||
|
* @param string $idcardName 姓名
|
||
|
* @param array(associative) $picture 人脸图片
|
||
|
* url string: 指定图片的url
|
||
|
* file string: 指定图片的路径
|
||
|
* buffer string: 指定图片的内容
|
||
|
* 以上三种指定其一即可,如果指定多个,则优先使用url,其次 file,再次 buffer。
|
||
|
*
|
||
|
* @return array http请求响应
|
||
|
*/
|
||
|
public function faceIdCardCompare($idcardNumber, $idcardName, $picture) {
|
||
|
|
||
|
if (! is_array($picture)) {
|
||
|
return Error::json(Error::$Param, 'param picture must be array');
|
||
|
}
|
||
|
|
||
|
$reqUrl = $this->conf->buildUrl('/face/idcardcompare');
|
||
|
$headers = $this->baseHeaders();
|
||
|
$files = $this->baseParams();
|
||
|
$files['idcard_number'] = strval($idcardNumber);
|
||
|
$files['idcard_name'] = strval($idcardName);
|
||
|
|
||
|
if (isset($picture['url'])) {
|
||
|
$headers[] = 'Content-Type:application/json';
|
||
|
$files['url'] = $picture['url'];
|
||
|
$data = json_encode($files);
|
||
|
} else {
|
||
|
if (isset($picture['file'])) {
|
||
|
if(PATH_SEPARATOR==';'){ // WIN OS
|
||
|
$path = iconv("UTF-8","gb2312//IGNORE",$picture['file']);
|
||
|
} else {
|
||
|
$path = $picture['file'];
|
||
|
}
|
||
|
|
||
|
$filePath = realpath($path);
|
||
|
if (! file_exists($filePath)) {
|
||
|
return Error::json(Error::$FilePath, 'file '.$picture['file'].' not exist');
|
||
|
}
|
||
|
|
||
|
if (function_exists('curl_file_create')) {
|
||
|
$files['image'] = curl_file_create($filePath);
|
||
|
} else {
|
||
|
$files['image'] = '@' . $filePath;
|
||
|
}
|
||
|
} else if (isset($picture['buffer'])) {
|
||
|
$files['image'] = $picture['buffer'];
|
||
|
} else {
|
||
|
return Error::json(Error::$Param, 'param picture is illegal');
|
||
|
}
|
||
|
$data = $files;
|
||
|
}
|
||
|
|
||
|
return $this->doRequest(array(
|
||
|
'url' => $reqUrl,
|
||
|
'method' => 'POST',
|
||
|
'data' => $data,
|
||
|
'header' => $headers,
|
||
|
'timeout' => $this->conf->timeout()
|
||
|
));
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* 活体检测第一步:获取唇语(验证码)
|
||
|
* @param string $seq 指定一个sessionId,若使用,请确保id唯一。
|
||
|
*
|
||
|
* @return array http请求响应
|
||
|
*/
|
||
|
public function faceLiveGetFour($seq=NULL) {
|
||
|
$reqUrl = $this->conf->buildUrl('/face/livegetfour');
|
||
|
$headers = $this->baseHeaders();
|
||
|
$headers[] = 'Content-Type:application/json';
|
||
|
$files = $this->baseParams();
|
||
|
if ($seq) {
|
||
|
$files['seq'] = strval($seq);
|
||
|
}
|
||
|
|
||
|
return $this->doRequest(array(
|
||
|
'url' => $reqUrl,
|
||
|
'method' => 'POST',
|
||
|
'data' => json_encode($files),
|
||
|
'header' => $headers,
|
||
|
'timeout' => $this->conf->timeout()
|
||
|
));
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* 活体检测第二步:检测
|
||
|
* @param string $validate faceLiveGetFour获取的验证码
|
||
|
* @param array(associative) $video 拍摄的视频
|
||
|
* file string: 指定图片的路径
|
||
|
* buffer string: 指定图片的内容
|
||
|
* 以上二种指定其一即可,如果指定多个,则优先使用 file,其次 buffer。
|
||
|
* @param bool $compareFlag 是否将视频中的人和card图片比对
|
||
|
* @param array(associative) $card 人脸图片
|
||
|
* file string: 指定图片的路径
|
||
|
* buffer string: 指定图片的内容
|
||
|
* 以上二种指定其一即可,如果指定多个,则优先使用 file,其次 buffer。
|
||
|
* @param string $seq 指定一个sessionId,若使用,请确保id唯一。
|
||
|
*
|
||
|
* @return array http请求响应
|
||
|
*/
|
||
|
public function faceLiveDetectFour($validate, $video, $compareFlag, $card=NULL, $seq=NULL) {
|
||
|
if (! is_array($video)) {
|
||
|
return Error::json(Error::$Param, 'param video must be array');
|
||
|
}
|
||
|
|
||
|
$reqUrl = $this->conf->buildUrl('/face/livedetectfour');
|
||
|
$headers = $this->baseHeaders();
|
||
|
$files = $this->baseParams();
|
||
|
$files['validate_data'] = strval($validate);
|
||
|
|
||
|
if (isset($video['file'])) {
|
||
|
if(PATH_SEPARATOR==';'){ // WIN OS
|
||
|
$path = iconv("UTF-8","gb2312//IGNORE",$video['file']);
|
||
|
} else {
|
||
|
$path = $video['file'];
|
||
|
}
|
||
|
|
||
|
$filePath = realpath($path);
|
||
|
if (! file_exists($filePath)) {
|
||
|
return Error::json(Error::$FilePath, 'file '.$video['file'].' not exist');
|
||
|
}
|
||
|
|
||
|
if (function_exists('curl_file_create')) {
|
||
|
$files['video'] = curl_file_create($filePath);
|
||
|
} else {
|
||
|
$files['video'] = '@' . $filePath;
|
||
|
}
|
||
|
} else if (isset($video['buffer'])) {
|
||
|
$files['video'] = $video['buffer'];
|
||
|
} else {
|
||
|
return Error::json(Error::$Param, 'param video is illegal');
|
||
|
}
|
||
|
|
||
|
if ($compareFlag) {
|
||
|
if (! is_array($card)) {
|
||
|
return Error::json(Error::$Param, 'param card must be array');
|
||
|
}
|
||
|
if (isset($card['file'])) {
|
||
|
if(PATH_SEPARATOR==';'){ // WIN OS
|
||
|
$path = iconv("UTF-8","gb2312//IGNORE",$card['file']);
|
||
|
} else {
|
||
|
$path = $card['file'];
|
||
|
}
|
||
|
|
||
|
$filePath = realpath($path);
|
||
|
if (! file_exists($filePath)) {
|
||
|
return Error::json(Error::$FilePath, 'file '.$card['file'].' not exist');
|
||
|
}
|
||
|
|
||
|
if (function_exists('curl_file_create')) {
|
||
|
$files['card'] = curl_file_create($filePath);
|
||
|
} else {
|
||
|
$files['card'] = '@' . $filePath;
|
||
|
}
|
||
|
} else if (isset($card['buffer'])) {
|
||
|
$files['card'] = $card['buffer'];
|
||
|
} else {
|
||
|
return Error::json(Error::$Param, 'param card is illegal');
|
||
|
}
|
||
|
$files['compare_flag'] = 'true';
|
||
|
} else {
|
||
|
$files['compare_flag'] = 'false';
|
||
|
}
|
||
|
if ($seq) {
|
||
|
$files['seq'] = strval($seq);
|
||
|
}
|
||
|
|
||
|
return $this->doRequest(array(
|
||
|
'url' => $reqUrl,
|
||
|
'method' => 'POST',
|
||
|
'data' => $files,
|
||
|
'header' => $headers,
|
||
|
'timeout' => $this->conf->timeout()
|
||
|
));
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* 活体检测第二步:检测--对比指定身份信息
|
||
|
* @param string $validate faceLiveGetFour获取的验证码
|
||
|
* @param array(associative) $video 拍摄的视频
|
||
|
* file string: 指定图片的路径
|
||
|
* buffer string: 指定图片的内容
|
||
|
* 以上二种指定其一即可,如果指定多个,则优先使用 file,其次 buffer。
|
||
|
* @param string $idcardNumber 身份证号
|
||
|
* @param string $idcardName 姓名
|
||
|
* @param string $seq 指定一个sessionId,若使用,请确保id唯一。
|
||
|
*
|
||
|
* @return array http请求响应
|
||
|
*/
|
||
|
public function faceIdCardLiveDetectFour($validate, $video, $idcardNumber, $idcardName, $seq=NULL) {
|
||
|
if (! is_array($video)) {
|
||
|
return Error::json(Error::$Param, 'param video must be array');
|
||
|
}
|
||
|
|
||
|
$reqUrl = $this->conf->buildUrl('/face/idcardlivedetectfour');
|
||
|
$headers = $this->baseHeaders();
|
||
|
$files = $this->baseParams();
|
||
|
$files['validate_data'] = strval($validate);
|
||
|
$files['idcard_number'] = strval($idcardNumber);
|
||
|
$files['idcard_name'] = strval($idcardName);
|
||
|
|
||
|
if (isset($video['file'])) {
|
||
|
if(PATH_SEPARATOR==';'){ // WIN OS
|
||
|
$path = iconv("UTF-8","gb2312//IGNORE",$video['file']);
|
||
|
} else {
|
||
|
$path = $video['file'];
|
||
|
}
|
||
|
|
||
|
$filePath = realpath($path);
|
||
|
if (! file_exists($filePath)) {
|
||
|
return Error::json(Error::$FilePath, 'file '.$video['file'].' not exist');
|
||
|
}
|
||
|
|
||
|
if (function_exists('curl_file_create')) {
|
||
|
$files['video'] = curl_file_create($filePath);
|
||
|
} else {
|
||
|
$files['video'] = '@' . $filePath;
|
||
|
}
|
||
|
} else if (isset($video['buffer'])) {
|
||
|
$files['video'] = $video['buffer'];
|
||
|
} else {
|
||
|
return Error::json(Error::$Param, 'param video is illegal');
|
||
|
}
|
||
|
|
||
|
if ($seq) {
|
||
|
$files['seq'] = strval($seq);
|
||
|
}
|
||
|
|
||
|
return $this->doRequest(array(
|
||
|
'url' => $reqUrl,
|
||
|
'method' => 'POST',
|
||
|
'data' => $files,
|
||
|
'header' => $headers,
|
||
|
'timeout' => $this->conf->timeout()
|
||
|
));
|
||
|
}
|
||
|
|
||
|
|
||
|
/**
|
||
|
* send http request
|
||
|
* @param array $request http请求信息
|
||
|
* url : 请求的url地址
|
||
|
* method : 请求方法,'get', 'post', 'put', 'delete', 'head'
|
||
|
* data : 请求数据,如有设置,则method为post
|
||
|
* header : 需要设置的http头部
|
||
|
* host : 请求头部host
|
||
|
* timeout : 请求超时时间
|
||
|
* cert : ca文件路径
|
||
|
* ssl_version: SSL版本号
|
||
|
* @return string http请求响应
|
||
|
*/
|
||
|
private function doRequest($request) {
|
||
|
$result = $this->http->sendRequest($request);
|
||
|
$json = json_decode($result, true);
|
||
|
if ($json) {
|
||
|
$json['http_code'] = $this->http->statusCode();
|
||
|
return json_encode($json);
|
||
|
}
|
||
|
|
||
|
return Error::json(Error::$Network, "response is not json.", $this->http->statusCode());
|
||
|
}
|
||
|
|
||
|
private function baseHeaders() {
|
||
|
return array (
|
||
|
'Host:'.$this->conf->host(),
|
||
|
'Authorization:'.$this->auth->getSign($this->bucket),
|
||
|
'User-Agent:'.Conf::getUa($this->auth->getAppId()),
|
||
|
);
|
||
|
}
|
||
|
private function baseParams() {
|
||
|
return array (
|
||
|
'appid' => $this->auth->getAppId(),
|
||
|
'bucket' => $this->bucket,
|
||
|
);
|
||
|
}
|
||
|
|
||
|
private $bucket;
|
||
|
private $auth;
|
||
|
private $http;
|
||
|
private $conf;
|
||
|
}
|