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
[amazonjs asin=“4861007623” locale=“JP” title=“アフィリエイターのための Web APIプログラミング入門”]