警告
2020 年 10 月 30 日,必应搜索 API 从 Azure AI 服务迁移到必应搜索服务。 本文档仅供参考。 有关更新的文档,请参阅 必应搜索 API 文档。 有关为必应搜索创建新 Azure 资源的说明,请参阅 通过 Azure 市场创建必应搜索资源。
必应图像搜索 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
- 一个返回与上传图像相似图像的必应查询 -
detectedObjects
- 在图像中找到的对象 -
image
- 图像的元数据 -
imageInsightsToken
- 用于在后续 GET 请求中从图像获取RecognizedEntities
(图像中可见的人员或位置)的令牌。 -
imageTags
- 图像的标签 -
pagesIncluding
- 包含图像的网页 -
relatedSearches
- 基于图像中的详细信息进行搜索。 -
visuallySimilarImages
- Web 上的类似图像。
在 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 响应打印到控制台。
在请求中使用图像洞察令牌
为了使用与POST
结果一起返回的ImageInsightsToken
,可以将其添加到GET
请求中。 例如:
https://api.cognitive.microsoft.com/bing/v7.0/images/details?InsightsToken="bcid_A2C4BB81AA2C9EF8E049C5933C546449*ccid_osS7gaos*mid_BF7CC4FC4A882A3C3D56E644685BFF7B8BACEAF2
如果图像中存在可识别的人员或位置,此请求将返回有关这些人员的信息。