本文介绍图像搜索服务PHP SDK的使用方法及示例。
接口列表
接口名称 | 接口说明 |
---|---|
Add | 增加图片。 |
SearchImageByPic | 使用图片进行搜索。 |
SearchImageByName | 指定名称,使用已入库的图片进行搜索。 |
Delete | 删除图片。 |
准备工作
在安装和使用阿里云SDK前,确保您已经注册阿里云账号并生成访问密钥(AccessKey)。详情请参见创建AccessKey。
composer镜像
https://developer.aliyun.com/composer
安装依赖
- 使用Composer,获取SDK。
composer require alibabacloud/imagesearch-20201214
- 使用composer.json文件。
{ "require": { "alibabacloud/imagesearch-20201214": "^3.1" } }
依赖相关代码示例如下。
declare (strict_types=1);
require __DIR__ . '/vendor/autoload.php';
use AlibabaCloud\SDK\ImageSearch\V20201214\ImageSearch;
use AlibabaCloud\SDK\ImageSearch\V20201214\Models\AddImageAdvanceRequest;
use AlibabaCloud\SDK\ImageSearch\V20201214\Models\SearchImageByPicAdvanceRequest;
use AlibabaCloud\SDK\ImageSearch\V20201214\Models\SearchImageByNameRequest;
use AlibabaCloud\SDK\ImageSearch\V20201214\Models\DeleteImageRequest;
use AlibabaCloud\Tea\Exception\TeaUnableRetryError;
use AlibabaCloud\Tea\Rpc\Rpc\Config;
use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions;
use GuzzleHttp\Psr7\Stream;
Add接口
- 代码示例
function _addImage() { $config = new Config(); $config->accessKeyId = "<accessKeyId>"; $config->accessKeySecret = "<accessKeySecret>"; $config->regionId = "<regionId>"; $config->endpoint = "imagesearch.[regionId].aliyuncs.com"; $client = new ImageSearch($config); $request = new AddImageAdvanceRequest(); // 必填,图像搜索实例名称。 $request->instanceName = "xxxxxx"; // 必填,图片名称,最多支持 512个字符。 // 1. ProductId + PicName唯一确定一张图片。 // 2. 如果多次添加图片具有相同的ProductId + PicName,以最后一次添加为准,前面添加的图片将被覆盖。 $request->productId = "test"; $request->picName = "test"; $request->picContentObject = new Stream(fopen("<filePath>", 'r+')); $runtime = new RuntimeOptions(); $runtime->maxIdleConns = 3; $runtime->connectTimeout = 3000; $runtime->readTimeout = 3000; try { $response = $client->addImageAdvance($request, $runtime); var_dump($response->toMap()); } catch (TeaUnableRetryError $e) { var_dump($e->getLastException(), $e->getLastRequest()); } }
- 结果示例
{ ["requestId"]=> string(36) "242CB8B7-DD36-42ED-9A76-37915DC7ED81" ["success"]=> bool(true) ["message"]=> string(7) "success" ["code"]=> int(0) ["picInfo"]=> array(2) { ["CategoryId"]=> int(0) ["Region"]=> string(15) "167,477,221,407" } ["_name":protected]=> array(5) { ["requestId"]=> string(9) "RequestId" ["success"]=> string(7) "Success" ["message"]=> string(7) "Message" ["code"]=> string(4) "Code" ["picInfo"]=> string(7) "PicInfo" } ["_required":protected]=> array(0) { } }
SearchImageByPic接口
- 代码示例
function _getImageByPic() { $config = new Config(); $config->accessKeyId = "<accessKeyId>"; $config->accessKeySecret = "<accessKeySecret>"; $config->regionId = "<regionId>"; $config->endpoint = "imagesearch.[regionId].aliyuncs.com"; $client = new ImageSearch($config); $request = new SearchImageByPicAdvanceRequest(); // 必填,图像搜索实例名称。 $request->instanceName = "xxxxx"; $imageStream = new Stream(fopen("<filePath>", 'r+')); $request->picContentObject = $imageStream; $runtime = new RuntimeOptions(); $runtime->maxIdleConns = 3; $runtime->connectTimeout = 3000; $runtime->readTimeout = 3000; try { $response = $client->searchImageByPicAdvance($request, $runtime); var_dump($response->toMap()); } catch (TeaUnableRetryError $e) { var_dump($e->getLastException(), $e->getLastRequest()); } catch (Exception $e) { } }
- 结果示例
{ ["requestId"]=> string(36) "453517A3-7D00-476E-A946-8CC3B9DC6FA1" ["success"]=> bool(true) ["code"]=> int(0) ["msg"]=> string(7) "success" ["auctions"]=> array(5) { [0]=> array(4) { ["CategoryId"]=> int(0) ["PicName"]=> string(7) "vae.jpg" ["ProductId"]=> string(4) "1000" ["SortExprValues"]=> string(22) "7.33136443711219e+24;0" ["Score"]=> float(1) } [1]=> array(4) { ["CategoryId"]=> int(0) ["PicName"]=> string(4) "test" ["ProductId"]=> string(4) "test" ["SortExprValues"]=> string(22) "7.33136443711219e+24;0" ["Score"]=> float(1) } ........ [4]=> array(4) { ["CategoryId"]=> int(0) ["PicName"]=> string(4) "test" ["ProductId"]=> string(4) "1000" ["SortExprValues"]=> string(22) "7.33136443711219e+24;0" ["Score"]=> float(1) } } ["head"]=> array(3) { ["DocsFound"]=> int(5) ["DocsReturn"]=> int(5) ["SearchTime"]=> int(171) } ["picInfo"]=> array(3) { ["CategoryId"]=> int(0) ["MultiRegion"]=> array(1) { [0]=> array(1) { ["Region"]=> string(15) "134,705,187,785" } } ["AllCategories"]=> array(14) { [0]=> array(2) { ["Id"]=> int(0) ["Name"]=> string(4) "Tops" } ........ [13]=> array(2) { ["Id"]=> int(88888888) ["Name"]=> string(5) "Other" } } ["Region"]=> string(15) "167,477,221,407" } ["_name":protected]=> array(7) { ["requestId"]=> string(9) "RequestId" ["success"]=> string(7) "Success" ["code"]=> string(4) "Code" ["msg"]=> string(3) "Msg" ["auctions"]=> string(8) "Auctions" ["head"]=> string(4) "Head" ["picInfo"]=> string(7) "PicInfo" } ["_required":protected]=> array(0) { } }
SearchImageByName接口
- 代码示例
function _getImageByName() { $config = new Config(); $config->accessKeyId = "<accessKeyId>"; $config->accessKeySecret = "<accessKeySecret>"; $config->regionId = "<regionId>"; $config->endpoint = "imagesearch.[regionId].aliyuncs.com"; $client = new ImageSearch($config); $request = new SearchImageByNameRequest(); // 必填,图像搜索实例名称。 $request->instanceName = "xxxxxxx"; // 必填,ProductId + PicName唯一确定一张图片 $request->productId = "test"; $request->picName = "test"; try { $response = $client->SearchImageByName($request); var_dump($response->toMap()); } catch (TeaUnableRetryError $e) { var_dump($e->getLastException(), $e->getLastRequest()); } catch (Exception $e) { } }
- 结果示例
["requestId"]=> string(36) "9248A5FC-97AB-4A96-8764-C771CF61D9A1" ["success"]=> bool(true) ["code"]=> int(0) ["msg"]=> string(7) "success" ["auctions"]=> array(5) { [0]=> array(4) { ["CategoryId"]=> int(0) ["PicName"]=> string(7) "vae.jpg" ["ProductId"]=> string(4) "1000" ["SortExprValues"]=> string(22) "7.33136443711219e+24;0" ["Score"]=> float(1) } ........ [4]=> array(4) { ["CategoryId"]=> int(0) ["PicName"]=> string(4) "test" ["ProductId"]=> string(4) "1000" ["SortExprValues"]=> string(22) "7.33136443711219e+24;0" ["Score"]=> float(1) } } ["head"]=> array(3) { ["DocsFound"]=> int(5) ["DocsReturn"]=> int(5) ["SearchTime"]=> int(21) } ["picInfo"]=> array(2) { ["CategoryId"]=> int(0) ["MultiRegion"]=> array(1) { [0]=> array(1) { ["Region"]=> string(15) "134,705,187,785" } } ["AllCategories"]=> array(14) { [0]=> array(2) { ["Id"]=> int(0) ["Name"]=> string(4) "Tops" } ........ [13]=> array(2) { ["Id"]=> int(88888888) ["Name"]=> string(5) "Other" } } } ["_name":protected]=> array(7) { ["requestId"]=> string(9) "RequestId" ["success"]=> string(7) "Success" ["code"]=> string(4) "Code" ["msg"]=> string(3) "Msg" ["auctions"]=> string(8) "Auctions" ["head"]=> string(4) "Head" ["picInfo"]=> string(7) "PicInfo" } ["_required":protected]=> array(0) { } }
Delete接口
- 代码示例
function _deleteImage() { $config = new Config(); $config->accessKeyId = "<accessKeyId>"; $config->accessKeySecret = "<accessKeySecret>"; $config->regionId = "<regionId>"; $config->endpoint = "imagesearch.[regionId].aliyuncs.com"; $client = new ImageSearch($config); $request = new DeleteImageRequest(); // 必填,图像搜索实例名称。 $request->instanceName = "xxxxxx"; // 必填,图片名称,最多支持 512个字符。 // 1. ProductId + PicName唯一确定一张图片。 $request->productId = "test"; // 2. 选填,图片名称。若不指定本参数,则删除ProductId下所有图片;若指定本参数,则删除ProductId+PicName指定的图片。 $request->picName = "test"; try { $response = $client->deleteImage($request); var_dump($response->toMap()); } catch (TeaUnableRetryError $e) { var_dump($e->getLastException(), $e->getLastRequest()); } catch (Exception $e) { } }
- 结果示例
{ ["requestId"]=> string(36) "052ECD87-933D-4E65-94F7-F0C0947E41A1" ["success"]=> bool(true) ["message"]=> string(7) "success" ["code"]=> int(0) ["_name":protected]=> array(4) { ["requestId"]=> string(9) "RequestId" ["success"]=> string(7) "Success" ["message"]=> string(7) "Message" ["code"]=> string(4) "Code" } ["_required":protected]=> array(0) { } }