本文介绍图像搜索服务PHP SDK的使用方法及示例。
准备工作
- 在安装和使用阿里云SDK前,确保您已经注册阿里云账号并生成访问密钥(AccessKey)。具体请参见创建AccessKey。
- 下载图像搜索PHP SDK。
代码示例
完整代码示例如下。
<?php
//用户根据自己下载包的情况进行引用
require_once "./aliyun-php-sdk-core/Config.php";
use ImageSearch\Request\V20190325\AddImageRequest;
use ImageSearch\Request\V20190325\SearchImageRequest;
use ImageSearch\Request\V20190325\DeleteImageRequest;
DefaultProfile::addEndPoint("<region>", "<region>", "ImageSearch", "imagesearch.<region>.aliyuncs.com");
//阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。
//强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。
//本示例以将AccessKey ID和AccessKey Secret保存在环境变量为例说明。您也可以根据业务需要,保存到配置文件里。
$profile = DefaultProfile::getProfile("<region>", getenv("CC_AK_ENV"), getenv("CC_SK_ENV"));
$client = new DefaultAcsClient($profile);
// 添加图片
$addRequest = new AddImageRequest();
$addRequest->setInstanceName("demo");
$addRequest->setProductId("test");
$addRequest->setPicName("test");
$content = file_get_contents("/home/admin/demo.jpg");
$encodePicContent = base64_encode($content);
$addRequest->setPicContent($encodePicContent);
// 选填,是否需要进行主体识别,默认为true。
// 1.为true时,由系统进行主体识别,以识别的主体进行搜索,主体识别结果可在Response中获取。
// 2. 为false时,则不进行主体识别,以整张图进行搜索。
//$addRequest->setCrop("false");
//$addRequest->setCrop("true");
// 选填,图片的主体区域,格式为 x1,x2,y1,y2, 其中 x1,y1 是左上角的点,x2,y2是右下角的点。
// 若用户设置了Region,则不论Crop参数为何值,都将以用户输入Region进行搜索。
// $addRequest->setRegion("100,300,100,300");
try {
$addResponse = $client->getAcsResponse($addRequest);
print_r($addResponse);
} catch(ServerException $e) {
print "Error: " . $e->getErrorCode() . " Message: " . $e->getMessage() . "\n";
} catch(ClientException $e) {
print "Error: " . $e->getErrorCode() . " Message: " . $e->getMessage() . "\n";
}
// 查询图片
$searchRequest = new SearchImageRequest();
$searchRequest->setInstanceName("demo");
$searchRequest->setType("SearchByName");
$searchRequest->setProductId("test");
$searchRequest->setPicName("test");
try {
$searchResponse = $client->getAcsResponse($searchRequest);
print_r($searchResponse);
} catch(ServerException $e) {
print "Error: " . $e->getErrorCode() . " Message: " . $e->getMessage() . "\n";
} catch(ClientException $e) {
print "Error: " . $e->getErrorCode() . " Message: " . $e->getMessage() . "\n";
}
// 删除图片
$deleteRequest = new DeleteImageRequest();
$deleteRequest->setInstanceName("demo");
$deleteRequest->setProductId("test");
try {
$deleteResponse = $client->getAcsResponse($deleteRequest);
print_r($deleteResponse);
} catch(ServerException $e) {
print "Error: " . $e->getErrorCode() . " Message: " . $e->getMessage() . "\n";
} catch(ClientException $e) {
print "Error: " . $e->getErrorCode() . " Message: " . $e->getMessage() . "\n";
}