阿里云人脸识别PHP调用示例参考

简介: 本文主要介绍PHP调用阿里云人脸识别服务,参数等的获取参考阿里云人脸识别使用流程简介。

作者:俏巴


概述


前面分别给出了关于阿里云人脸识别Java调用示例参考阿里云人脸识别C#调用示例参考阿里云人脸识别Python3调用示例参考 。本文主要介绍PHP调用阿里云人脸识别服务,参数等的获取参考阿里云人脸识别使用流程简介


Code Sample


1、环境依赖


  • composer.json

{
<span class="hljs-string">"require"</span>: {
  <span class="hljs-string">"guzzlehttp/guzzle"</span>: <span class="hljs-string">"~6.0"</span>

}
}


2、使用网络图片


<?php

use GuzzleHttpPsr7Request;
use GuzzleHttpClient;
require_once 'vendorautoload.php';

// 参数设置
$akId = "";
$akSecret = "";
$body1 = '{"type":"0","image_url":"https://ss0.bdstatic.com/94oJfD_bAAcT8t7mm9GUKT-xh_/timg?image&quality=100&size=b4000_4000&sec=1553926699&di=3e4484731c8897c57e67b3f632801f9a&src=http://b-ssl.duitang.com/uploads/item/201603/28/20160328121906_ErzAB.jpeg"}';
$url = "https://dtplus-cn-shanghai.data.aliyuncs.com/face/attribute";

$date1 = gmdate("D, d M Y H:i:s GMT");
// 参数构造
$options = array(

<span class="hljs-string">'http'</span> =&gt; array(
    <span class="hljs-string">'header'</span> =&gt; array(
        <span class="hljs-string">'accept'</span>=&gt; <span class="hljs-string">"application/json"</span>,
        <span class="hljs-string">'content-type'</span>=&gt; <span class="hljs-string">"application/json"</span>,
        <span class="hljs-string">'date'</span>=&gt; $date1,
        <span class="hljs-string">'authorization'</span> =&gt; <span class="hljs-string">''</span>
    ),
    <span class="hljs-string">'method'</span> =&gt; <span class="hljs-string">"POST"</span>, <span class="hljs-comment">//可以是 GET, POST, DELETE, PUT</span>
    <span class="hljs-string">'content'</span> =&gt; $body1

// 'content' => json_encode($body1)

)

);

$http = $options['http'];
$header = $http['header'];
$urlObj = parse_url($url);
if(empty($urlObj["query"]))

$path = $urlObj[<span class="hljs-string">"path"</span>];
<span class="hljs-keyword">else</span>
    $path = $urlObj[<span class="hljs-string">"path"</span>].<span class="hljs-string">"?"</span>.$urlObj[<span class="hljs-string">"query"</span>];
    $body = $http[<span class="hljs-string">'content'</span>];
    <span class="hljs-keyword">if</span>(empty($body))
        $bodymd5 = $body;
        <span class="hljs-keyword">else</span>
            $bodymd5 = base64_encode(md5($body,<span class="hljs-literal">true</span>));
            $stringToSign = $http[<span class="hljs-string">'method'</span>].<span class="hljs-string">"\n"</span>.$header[<span class="hljs-string">'accept'</span>].<span class="hljs-string">"\n"</span>.$bodymd5.<span class="hljs-string">"\n"</span>.$header[<span class="hljs-string">'content-type'</span>].<span class="hljs-string">"\n"</span>.$header[<span class="hljs-string">'date'</span>].<span class="hljs-string">"\n"</span>.$path;
            $signature = base64_encode(
                hash_hmac(
                    <span class="hljs-string">"sha1"</span>,
                    $stringToSign,
                    $akSecret, <span class="hljs-literal">true</span>));

$authHeader = "Dataplus "."$akId".":"."$signature";
$options['http']['header']['authorization'] = $authHeader;

构造Rest API Client请求

$client = new Client();
$headers = ['Content-type' => 'application/json', 'Accept' => 'application/json', 'Authorization' => $options'http'['authorization'], 'Date' => $date1];

$request = new Request('POST','https://dtplus-cn-shanghai.data.aliyuncs.com/face/attribute',$headers,$body1);

$response = $client->send($request);
echo $response->getBody();

?>


3、使用本地图片


<?php

use GuzzleHttpPsr7Request;
use GuzzleHttpClient;
require_once 'vendorautoload.php';

// 参数设置
$akId = "";
$akSecret = "";

读取本地图片

$image_file = 'C:UsersAdministratorDesktoptime.jpeg';
$image_info = getimagesize($image_file);
$base64_image_content = "data:{$image_info['mime']};base64," . chunk_split(base64_encode(file_get_contents($image_file)));

function trimall($str)//删除所有的空格
{

$qian=array(<span class="hljs-string">" "</span>,<span class="hljs-string">" "</span>,<span class="hljs-string">"\t"</span>,<span class="hljs-string">"\n"</span>,<span class="hljs-string">"\r"</span>);
$hou=array(<span class="hljs-string">""</span>,<span class="hljs-string">""</span>,<span class="hljs-string">""</span>,<span class="hljs-string">""</span>,<span class="hljs-string">""</span>);
<span class="hljs-keyword">return</span> str_replace($qian,$hou,$str);

}

$base64_image_content = substr($base64_image_content, 23);

$base64_image_content = trimall($base64_image_content);

// echo $base64_image_content;

$body1 = '{"type":"1","content":"'.$base64_image_content.'"}';

$url = "https://dtplus-cn-shanghai.data.aliyuncs.com/face/attribute";

$date1 = gmdate("D, d M Y H:i:s GMT");
// 参数构造
$options = array(

<span class="hljs-string">'http'</span> =&gt; array(
    <span class="hljs-string">'header'</span> =&gt; array(
        <span class="hljs-string">'accept'</span>=&gt; <span class="hljs-string">"application/json"</span>,
        <span class="hljs-string">'content-type'</span>=&gt; <span class="hljs-string">"application/json"</span>,
        <span class="hljs-string">'date'</span>=&gt; $date1,
        <span class="hljs-string">'authorization'</span> =&gt; <span class="hljs-string">''</span>
    ),
    <span class="hljs-string">'method'</span> =&gt; <span class="hljs-string">"POST"</span>, <span class="hljs-comment">//可以是 GET, POST, DELETE, PUT</span>
    <span class="hljs-string">'content'</span> =&gt; $body1
)

);

$http = $options['http'];
$header = $http['header'];
$urlObj = parse_url($url);
if(empty($urlObj["query"]))

$path = $urlObj[<span class="hljs-string">"path"</span>];
<span class="hljs-keyword">else</span>
    $path = $urlObj[<span class="hljs-string">"path"</span>].<span class="hljs-string">"?"</span>.$urlObj[<span class="hljs-string">"query"</span>];
    $body = $http[<span class="hljs-string">'content'</span>];
    <span class="hljs-keyword">if</span>(empty($body))
        $bodymd5 = $body;
        <span class="hljs-keyword">else</span>
            $bodymd5 = base64_encode(md5($body,<span class="hljs-literal">true</span>));
            $stringToSign = $http[<span class="hljs-string">'method'</span>].<span class="hljs-string">"\n"</span>.$header[<span class="hljs-string">'accept'</span>].<span class="hljs-string">"\n"</span>.$bodymd5.<span class="hljs-string">"\n"</span>.$header[<span class="hljs-string">'content-type'</span>].<span class="hljs-string">"\n"</span>.$header[<span class="hljs-string">'date'</span>].<span class="hljs-string">"\n"</span>.$path;
            $signature = base64_encode(
                hash_hmac(
                    <span class="hljs-string">"sha1"</span>,
                    $stringToSign,
                    $akSecret, <span class="hljs-literal">true</span>));

$authHeader = "Dataplus "."$akId".":"."$signature";
$options['http']['header']['authorization'] = $authHeader;

构造Rest API Client请求

$client = new Client();
$headers = ['Content-type' => 'application/json', 'Accept' => 'application/json', 'Authorization' => $options'http'['authorization'], 'Date' => $date1];
$request = new Request('POST','https://dtplus-cn-shanghai.data.aliyuncs.com/face/attribute',$headers,$body);

$response = $client->send($request);
echo $response->getBody();
?>


测试结果


_


SSL错误处理


PHP 调用认知服务证书认证问题

相关文章
|
21天前
|
PHP 对象存储 Docker
阿里云云效产品使用问题之PHP和LAMP项目部署回滚不生效,该怎么办
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
2月前
|
弹性计算 Java PHP
新手用户注册阿里云账号、实名认证、购买云服务器图文教程参考
对于初次购买阿里云产品的用户来说,第一步要做的是注册账号并完成实名认证,然后才是购买阿里云服务器或者其他云产品,本文为大家以图文形式展示一下新手用户从注册阿里云账号、实名认证到购买云服务器完整详细教程,以供参考。
新手用户注册阿里云账号、实名认证、购买云服务器图文教程参考
|
21天前
|
文字识别 算法 API
视觉智能开放平台产品使用合集之uniapp框架如何使用阿里云金融级人脸识别
视觉智能开放平台是指提供一系列基于视觉识别技术的API和服务的平台,这些服务通常包括图像识别、人脸识别、物体检测、文字识别、场景理解等。企业或开发者可以通过调用这些API,快速将视觉智能功能集成到自己的应用或服务中,而无需从零开始研发相关算法和技术。以下是一些常见的视觉智能开放平台产品及其应用场景的概览。
|
22小时前
|
敏捷开发 测试技术 持续交付
阿里云云效产品使用合集之代码域如何管理上传的PHP和HTML代码?
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
2月前
|
前端开发 Serverless Shell
Serverless 应用引擎操作报错合集之在阿里云函数计算中,laravel zip包使用示例的start.sh脚本启动时出现错误代码如何解决
Serverless 应用引擎(SAE)是阿里云提供的Serverless PaaS平台,支持Spring Cloud、Dubbo、HSF等主流微服务框架,简化应用的部署、运维和弹性伸缩。在使用SAE过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
|
2月前
|
消息中间件 API PHP
阿里云OpenAPI RocketMQ 5.0的PHP收发消息文档
【2月更文挑战第23天】阿里云OpenAPI RocketMQ 5.0的PHP收发消息文档
201 7
|
2月前
|
消息中间件 PHP 开发工具
阿里云OpenAPI RocketMQ 5.0的PHP收发消息文档可以在阿里云开发者门户中找到
【1月更文挑战第22天】【1月更文挑战第108篇】阿里云OpenAPI RocketMQ 5.0的PHP收发消息文档可以在阿里云开发者门户中找到
88 6
|
2月前
对于阿里云OpenAPI的域名实名认证
【1月更文挑战第5天】【1月更文挑战第22篇】对于阿里云OpenAPI的域名实名认证
49 1
|
2月前
|
移动开发 JavaScript
简单介绍下阿里云的H5滑动验证+H5示例源码
简单介绍下阿里云的H5滑动验证+H5示例源码
92 0