警告
在 2020 年 10 月 30 日,Bing 搜尋 API 從 Azure AI 服務移至 Bing 搜尋服務。 本文件僅供參考之用。 如需更新的文件,請參閱 Bing 搜尋 API 文件。 如需針對 Bing 搜尋建立新 Azure 資源的指示,請參閱透過 Azure Marketplace 建立 Bing 搜尋資源。
透過 Bing 影像搜尋 API 提供多個 端點 。 端點 /details 接受具有影像的POST要求,而且可以傳回有關映像的各種詳細數據。 此 C# 應用程式會使用此 API 傳送影像,並顯示 Bing 所傳回的詳細數據,也就是 JSON 物件,如下所示:
本教學課程說明如何:
- 在
/details要求中使用影像搜尋POST端點 - 指定要求的標頭
- 使用 URL 參數來指定結果
- 上傳影像數據並傳送
POST要求 - 將 JSON 結果列印至主控台
先決條件
- 任何版本的Visual Studio 2017 或更高版本。
建構影像詳細數據搜尋要求
以下是 /details 端點,它可以接受包含影像數據的 POST 請求。 您可以使用下方的全域端點,或資源 Azure 入口網站中顯示的 自定義子域 端點。
https://api.cognitive.microsoft.com/bing/v7.0/images/details
建構搜尋要求 URL 時, modules 參數會遵循上述端點,並指定結果將包含的詳細數據類型:
modules=All-
modules=RecognizedEntities(圖像中可見的人或地點)
在 POST 要求中指定 modules=All ,以取得包含下列內容的 JSON 文字:
-
bestRepresentativeQuery- 傳回與所上傳影像相似的 Bing 查詢結果 -
detectedObjects- 影像中找到的物件 -
image- 影像的元數據 -
imageInsightsToken- 用於稍後的 GET 請求的權杖,可以從影像中獲得RecognizedEntities(顯示在人或地點的圖像)。 -
imageTags- 影像的標籤 -
pagesIncluding- 包含影像的網頁 -
relatedSearches- 根據影像中的詳細數據進行搜尋。 -
visuallySimilarImages- 網站上的類似影像。
在 POST 要求中指定 modules=RecognizedEntities ,以便只取得 imageInsightsToken,這可用於後續的 GET 要求,以識別影像中的人員或位置。
建立 WebClient 物件,並設定 API 要求的標頭
建立 WebClient 物件,並設定標頭。 Bing 搜尋 API 的所有請求都需要 Ocp-Apim-Subscription-Key。
POST上傳影像的要求也必須指定 ContentType: multipart/form-data。
WebClient client = new WebClient();
client.Headers["Ocp-Apim-Subscription-Key"] = accessKey;
client.Headers["ContentType"] = "multipart/form-data";
上傳影像,並顯示結果
類別WebClient的UpLoadFile()方法會格式化POST請求中的數據,包括格式化RequestStream和呼叫HttpWebRequest。
請呼叫WebClient.UpLoadFile(),並使用/details端點以上傳圖像檔。 使用 JSON 回應來初始化 結構的實例 SearchResult ,並儲存回應。
const string uriBase = "https://api.cognitive.microsoft.com/bing/v7.0/images/details";
// The image to upload. Replace with your file and path.
const string imageFile = "your-image.jpg";
byte[] resp = client.UploadFile(uriBase + "?modules=All", imageFile);
var json = System.Text.Encoding.Default.GetString(resp);
// Create result object for return
var searchResult = new SearchResult()
{
jsonResult = json,
relevantHeaders = new Dictionary<String, String>()
};
然後,此 JSON 回應可以列印至主控台。
在要求中使用圖像分析令牌
若要使用隨著 ImageInsightsToken 結果傳回的 POST,您可以將它新增至 GET 要求。 例如:
https://api.cognitive.microsoft.com/bing/v7.0/images/details?InsightsToken="bcid_A2C4BB81AA2C9EF8E049C5933C546449*ccid_osS7gaos*mid_BF7CC4FC4A882A3C3D56E644685BFF7B8BACEAF2
如果影像中有可識別的人員或位置,則此要求會傳回其相關信息。