Bing Search APIで画像取得する簡易チュートリアル(PHP編)

1.登録&アカウントキーの取得

Microsoft Azure Marketplace」から、プランを選ぶ。無料で使う場合は、5,000トランザクション/月。

マイ アカウントから「プライマリ アカウント キー」を取得。

2.Bing Search APIのサンプルコード(PHP)

エラー処理などしてないですが、こんな感じで使えます。

ドキュメントは、クイックスタート(英語)パラメーターなどの一覧(英語)があります。


/**
* BingSeachAPIで画像を取得するサンプルコード
*
* @param string $keyword 検索ワード
* @return object 
*/

function search_bing($keyword) {
  //取得したアカウントキー
  $accountKey = 'aaaaaaaaaaabbbbbbbbbbbbbb';

  //エンドポイントとパラメーターなどをセット
  //画像検索以外の場合は$serviceOpを変更
  $query = urlencode("'{$keyword}'");
  $rootUri = 'https://api.datamarket.azure.com/Bing/Search';
  $serviceOp = "Image";
  $endpoint = "$rootUri/$serviceOp?\$format=json&Query=$query&ImageFilters='Aspect:Wide'";

  //ストリームコンテキストを作成
  $auth = base64_encode("$accountKey:$accountKey");
  $data = array(
    'http' => array(
    'request_fulluri' => true,
    'ignore_errors' => true,
    'header' => "Authorization: Basic $auth")
  );
  $context = stream_context_create($data);

  //とりあえず、file_get_contents()でjsonを取得
  $response = file_get_contents($endpoint, 0, $context);
  $response = json_decode($response);

  return $response;
}

3.画像検索で使うパラメーターImageFilter

「ImageFilters=’Aspect:Wide’」みたいに指定できます。

Size:Small サイズ小の画像を取得
Size:Medium サイズ中の画像を取得
Size:Large サイズ大の画像を取得
Size:Height:{Height} {Height}(数字)に指定されたサイズの画像を取得
Size:Width:{Width} {Width}(数字)に指定されたサイズの画像を取得
Aspect:Square 正方形の画像を取得
Aspect:Wide 横長の画像を取得
Aspect:Tall 縦長の画像を取得
Color:Color カラー画像を取得
Color:Monochrome モノクロ画像を取得
Style:Photo 写真を取得
Style:Graphics イラスト、グラフィックを取得
Face:Face 顔?の画像を取得
Face:Portrait 肩から上が写った画像を取得
Face:Other その他の人物写真?を取得

4. 注意点:ImageFilterのエラー

シンプルなAPIなので特に気をつける点はないのですが、ImageFilterに複数パラメーターをセットするとエラーになるのには注意です。

公式ドキュメントには、「ImageFilters=’Aspect:Wide+Size:Large’」のように複数セットできそうな記述があるのですが、実際には以下の様なエラーになります。

Parameter: ImageFilters has an invalid pattern of characters

フォーラムにも質問が書いてあるのですがどうやら仕様のようです。2012年1月に下記の質問が投げられ、それから進捗はないようなので今後の対応は望み薄な気がします。

▼参考:フォーラムでの質問
Azure Bing Search API – Image search with multiple image filters

コメントを残す

メールアドレスが公開されることはありません。