Guida introduttiva: Ricerca di immagini utilizzando l'API REST di Bing Image Search e C#
Avvertimento
Il 30 ottobre 2020, le API di ricerca Bing sono state spostate dai servizi di intelligenza artificiale di Azure ai servizi di ricerca Bing. Questa documentazione è disponibile solo per riferimento. Per la documentazione aggiornata, vedere la Documentazione dell'API di Ricerca Bing. Per istruzioni sulla creazione di nuove risorse di Azure per Ricerca Bing, vedere Creare una risorsa di Ricerca Bing tramite Azure Marketplace.
Usare questa guida introduttiva per informazioni su come inviare richieste di ricerca all'API Ricerca immagini Bing. Questa applicazione C# invia una query di ricerca all'API e visualizza l'URL della prima immagine nei risultati. Anche se questa applicazione è scritta in C#, l'API è un servizio Web RESTful compatibile con la maggior parte dei linguaggi di programmazione.
Prerequisiti
- Qualsiasi edizione di Visual Studio 2017 o versione successiva.
- Framework Json.NET disponibile come pacchetto NuGet.
- Se si usa Linux/MacOS, questa applicazione può essere eseguita usando Mono.
Creare e inizializzare un progetto
Creare una nuova soluzione console denominata
BingSearchApisQuickStart
in Visual Studio. Quindi, aggiungi i seguenti namespace al file di codice principale.using System; using System.Net; using System.IO; using System.Collections.Generic; using Newtonsoft.Json.Linq;
Creare variabili per l'endpoint API, la chiave di sottoscrizione e il termine di ricerca. Per
uriBase
è possibile usare l'endpoint globale nel codice seguente oppure usare l'endpoint sottodominio personalizzato visualizzato nel portale di Azure per la risorsa.//... namespace BingSearchApisQuickstart { class Program { // Replace the this string with your valid access key. const string subscriptionKey = "enter your key here"; const string uriBase = "https://api.cognitive.microsoft.com/bing/v7.0/images/search"; const string searchTerm = "tropical ocean"; //...
Creare una struct per formattare la risposta di Bing Image Search
Definire uno SearchResult
struct per contenere i risultati della ricerca di immagini e le informazioni sull'intestazione JSON.
namespace BingSearchApisQuickstart
{
class Program
{
//...
struct SearchResult
{
public String jsonResult;
public Dictionary<String, String> relevantHeaders;
}
//...
Creare un metodo per inviare richieste di ricerca
Creare un metodo denominato BingImageSearch
per eseguire la chiamata all'API e impostare il tipo restituito sullo SearchResult
struct creato in precedenza.
//...
namespace BingSearchApisQuickstart
{
//...
class Program
{
//...
static SearchResult BingImageSearch(string searchTerm)
{
}
//...
Creare e gestire una richiesta di ricerca immagini
Nel metodo BingImageSearch
, eseguire i seguenti passaggi:
Costruire l'URI per la richiesta di ricerca. Formattare il
SearchTerm
termine di ricerca prima di aggiungerlo alla stringa.static SearchResult BingImageSearch(string SearchTerm){ var uriQuery = uriBase + "?q=" + Uri.EscapeDataString(SearchTerm); //...
Inviare la richiesta Web e ottenere la risposta come stringa JSON.
WebRequest request = WebRequest.Create(uriQuery); request.Headers["Ocp-Apim-Subscription-Key"] = subscriptionKey; HttpWebResponse response = (HttpWebResponse)request.GetResponseAsync().Result; string json = new StreamReader(response.GetResponseStream()).ReadToEnd();
Crea l'oggetto del risultato della ricerca ed estrai le intestazioni HTTP di Bing. Quindi, restituisci
searchResult
.// Create the result object for return var searchResult = new SearchResult() { jsonResult = json, relevantHeaders = new Dictionary<String, String>() }; // Extract Bing HTTP headers foreach (String header in response.Headers) { if (header.StartsWith("BingAPIs-") || header.StartsWith("X-MSEdge-")) searchResult.relevantHeaders[header] = response.Headers[header]; } return searchResult;
Elaborare e visualizzare la risposta
Nel metodo main chiamare
BingImageSearch()
e archiviare la risposta restituita. Deserializzare quindi il codice JSON in un oggetto .SearchResult result = BingImageSearch(searchTerm); //deserialize the JSON response from the Bing Image Search API dynamic jsonObj = Newtonsoft.Json.JsonConvert.DeserializeObject(result.jsonResult);
Ottenere la prima immagine restituita da
jsonObj
e stampare il titolo e un URL per l'immagine.var firstJsonObj = jsonObj["value"][0]; Console.WriteLine("Title for the first image result: " + firstJsonObj["name"]+"\n"); //After running the application, copy the output URL into a browser to see the image. Console.WriteLine("URL for the first image result: " + firstJsonObj["webSearchUrl"]+"\n");
Esempio di risposta JSON
Le risposte dall'API Ricerca immagini Bing vengono restituite come JSON. Questa risposta di esempio è stata troncata per mostrare un singolo risultato.
{
"_type":"Images",
"instrumentation":{
"_type":"ResponseInstrumentation"
},
"readLink":"images\/search?q=tropical ocean",
"webSearchUrl":"https:\/\/www.bing.com\/images\/search?q=tropical ocean&FORM=OIIARP",
"totalEstimatedMatches":842,
"nextOffset":47,
"value":[
{
"webSearchUrl":"https:\/\/www.bing.com\/images\/search?view=detailv2&FORM=OIIRPO&q=tropical+ocean&id=8607ACDACB243BDEA7E1EF78127DA931E680E3A5&simid=608027248313960152",
"name":"My Life in the Ocean | The greatest WordPress.com site in ...",
"thumbnailUrl":"https:\/\/tse3.mm.bing.net\/th?id=OIP.fmwSKKmKpmZtJiBDps1kLAHaEo&pid=Api",
"datePublished":"2017-11-03T08:51:00.0000000Z",
"contentUrl":"https:\/\/mylifeintheocean.files.wordpress.com\/2012\/11\/tropical-ocean-wallpaper-1920x12003.jpg",
"hostPageUrl":"https:\/\/mylifeintheocean.wordpress.com\/",
"contentSize":"897388 B",
"encodingFormat":"jpeg",
"hostPageDisplayUrl":"https:\/\/mylifeintheocean.wordpress.com",
"width":1920,
"height":1200,
"thumbnail":{
"width":474,
"height":296
},
"imageInsightsToken":"ccid_fmwSKKmK*mid_8607ACDACB243BDEA7E1EF78127DA931E680E3A5*simid_608027248313960152*thid_OIP.fmwSKKmKpmZtJiBDps1kLAHaEo",
"insightsMetadata":{
"recipeSourcesCount":0,
"bestRepresentativeQuery":{
"text":"Tropical Beaches Desktop Wallpaper",
"displayText":"Tropical Beaches Desktop Wallpaper",
"webSearchUrl":"https:\/\/www.bing.com\/images\/search?q=Tropical+Beaches+Desktop+Wallpaper&id=8607ACDACB243BDEA7E1EF78127DA931E680E3A5&FORM=IDBQDM"
},
"pagesIncludingCount":115,
"availableSizesCount":44
},
"imageId":"8607ACDACB243BDEA7E1EF78127DA931E680E3A5",
"accentColor":"0050B2"
}]
}
Passaggi successivi
Vedere anche
- Che cos'è l'API Ricerca immagini Bing?
- Provare una demo interattiva online
- Dettagli sui prezzi per le API di Ricerca Bing
- Documentazione dei Servizi di Azure AI
- riferimento all'API Ricerca immagini Bing