このトピックでは、Alibaba Cloud Image Search SDK for PHP の使用方法について説明します。

準備

  • Alibaba Cloud SDK をインストールして使用する前に、Alibaba Cloud アカウントが作成され、AccessKey ペアを取得済みであることを確認してください。 詳細については、「AccessKey ペアの作成」をご参照ください。
  • Alibaba Cloud Image Search SDK for PHP ダウンロードしてインストールします。 PHP のバージョンは、5.3 以降でなければなりません。

クライアントの作成

以下のサンプルコードを使用して、クライアントを作成できます。
chdir(dirname(__FILE__));
require_once ".. /.. /../aliyun-php-sdk-core/Config.php";
$product = "ImageSearch";
$region = "<Region>"; // The region ID of the instance. For example, if your instance resides in the China (Shanghai) region, set this parameter to cn-shanghai. If your instance resides in the Singapore (Singapore) region, set this parameter to ap-southeast-1. 
$accessKeyId = "<AccessKeyID>"; // The AccessKey ID. You can obtain the AccessKey ID from https://ak-console.aliyun.com.
$accessKeySecret = "<AccessKeySecret>";
$instanceName = "<InstanceName>"; // The name of the purchased Image Search instance, for example, imagesearchtest.
$domain = "imagesearch.".$region.".aliyuncs.com"; 
$profile = DefaultProfile::getProfile($region, $accessKeyId, $accessKeySecret);
DefaultProfile::addEndPoint($region, $region, $product, $domain);
$client = new DefaultAcsClient($profile);

画像の追加

商品画像検索の場合、カテゴリ ID を指定することも指定しないこともできます。 一般画像検索の場合、カテゴリ ID を指定する必要はありません。
use ImageSearch\Request\V20180120\AddItemRequest;
$req = new AddItemRequest();
$req->setinstanceName($instanceName);
// Read the image file content.
$sampleFileName = ". /1.jpg";
$content = file_get_contents($sampleFileName);
$req->setCateId("0");
$req->setItemId("1234");
$req->setCustContent("{\"key\":\"value\"}");
$req->addPicture("cloth1", $content);
if (! $req->buildPostContent()) {
    return ;
}
try {
    $response = $client->getAcsResponse($req);
    print_r($response);
} catch(ServerException $e) {
    print "Error: " . $e->getErrorCode() . " Message: " . $e->getMessage() . "\n";
} catch(ClientException $e) {
    print "Error: " . $e->getErrorCode() . " Message: " . $e->getMessage() . "\n";
}

画像の検索

商品画像検索の場合、カテゴリ ID を指定することも指定しないこともできます。 カテゴリ ID を指定すると、指定したカテゴリ ID に基づいて画像が検索されます。 カテゴリ ID を指定しない場合、システムはカテゴリ ID を予測し、予測されたカテゴリ ID に基づいて画像を検索します。 一般画像検索の場合、カテゴリ ID を指定する必要はありません。
use ImageSearch\Request\V20180120\SearchItemRequest;
$req = new SearchItemRequest();
$req->setinstanceName($instanceName);
$req->setNum(10);
$req->setStart(0);
// Read Image File
$sampleFileName = ". /1.jpg";
$content = file_get_contents($sampleFileName);
fclose($handle);
$req->setSearchPicture($content);
if (! $req->buildPostContent()) {
    return ;
}
try {
    $response = $client->getAcsResponse($req);
    print_r($response);
} catch(ServerException $e) {
    print "Error: " . $e->getErrorCode() . " Message: " . $e->getMessage() . "\n";
} catch(ClientException $e) {
    print "Error: " . $e->getErrorCode() . " Message: " . $e->getMessage() . "\n";
}

画像の削除

以下のサンプルコードを使用して、画像を削除できます。
use ImageSearch\Request\V20180120\DeleteItemRequest;
$req = new DeleteItemRequest();
$req->setinstanceName($instanceName);
$req->setItemId("1234");
$req->addPicture("cloth1");
if (! $req->buildPostContent()) {
    return ;
}
try {
    $response = $client->getAcsResponse($req);
    print_r($response);
} catch(ServerException $e) {
    print "Error: " . $e->getErrorCode() . " Message: " . $e->getMessage() . "\n";
} catch(ClientException $e) {
    print "Error: " . $e->getErrorCode() . " Message: " . $e->getMessage() . "\n";
}