Rychlý start: Získání přehledů o obrázku pomocí rozhraní REST API pro vizuální vyhledávání Bingu a Javy
Upozornění
30. října 2020 se rozhraní API Vyhledávání Bingu přesunula ze služeb Azure AI na Vyhledávání Bingu Services. Tato dokumentace je k dispozici pouze pro referenci. Aktualizovanou dokumentaci najdete v dokumentaci k rozhraní API Bingu pro vyhledávání. Pokyny k vytváření nových prostředků Azure pro vyhledávání Bingu najdete v tématu Vytvoření prostředku Vyhledávání Bingu prostřednictvím Azure Marketplace.
Pomocí tohoto rychlého startu můžete provést první volání rozhraní API pro vizuální vyhledávání Bingu. Tato aplikace v Javě nahraje obrázek do rozhraní API a zobrazí informace, které vrátí. I když je tato aplikace napsaná v Javě, rozhraní API je webová služba RESTful kompatibilní s většinou programovacích jazyků.
Požadavky
Vytvoření prostředku Azure
Začněte používat rozhraní API pro vizuální vyhledávání Bingu vytvořením jednoho z následujících prostředků Azure:
prostředek Vyhledávání Bingu v7
- K dispozici prostřednictvím Azure Portal, dokud prostředek neodstraníte.
- Vyberte cenovou
S9
úroveň.
- K dispozici prostřednictvím Azure Portal, dokud prostředek neodstraníte.
- Pro své aplikace použijte stejný klíč a koncový bod napříč několika službami Azure AI.
Vytvoření a inicializace projektu
Ve svém oblíbeném integrovaném vývojovém prostředí nebo editoru vytvořte nový projekt Java a naimportujte následující knihovny:
import java.util.*; import java.io.*; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.google.gson.JsonObject; import com.google.gson.JsonParser; // HttpClient libraries import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.client.methods.HttpPost; import org.apache.http.entity.ContentType; import org.apache.http.entity.mime.MultipartEntityBuilder; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClientBuilder;
Vytvořte proměnné pro koncový bod rozhraní API, klíč předplatného a cestu k imagi.
endpoint
Jako hodnotu můžete použít globální koncový bod v následujícím kódu nebo vlastní koncový bod subdomény zobrazený v Azure Portal pro váš prostředek.static String endpoint = "https://api.cognitive.microsoft.com/bing/v7.0/images/visualsearch"; static String subscriptionKey = "your-key-here"; static String imagePath = "path-to-your-image";
Když nahrajete místní obrázek, musí data formuláře obsahovat
Content-Disposition
záhlaví. Nastavte jehoname
parametr na image a nastavtefilename
parametr na název souboru obrázku. Obsah formuláře zahrnuje binární data obrázku. Maximální velikost obrázku, kterou můžete nahrát, je 1 MB.--boundary_1234-abcd Content-Disposition: form-data; name="image"; filename="myimagefile.jpg" ÿØÿà JFIF ÖÆ68g-¤CWŸþ29ÌÄøÖ‘º«™æ±èuZiÀ)"óÓß°Î= ØJ9á+*G¦... --boundary_1234-abcd--
Vytvoření analyzátoru JSON
Vytvořte metodu, která umožní lépe číst odpověď JSON z rozhraní API pomocí JsonParser
.
public static String prettify(String json_text) {
JsonParser parser = new JsonParser();
JsonObject json = parser.parse(json_text).getAsJsonObject();
Gson gson = new GsonBuilder().setPrettyPrinting().create();
return gson.toJson(json);
}
Sestavení žádosti o vyhledávání a dotazu
V hlavní metodě vaší aplikace vytvořte klienta HTTP pomocí
HttpClientBuilder.create().build();
.CloseableHttpClient httpClient = HttpClientBuilder.create().build();
Vytvořte
HttpEntity
objekt pro nahrání obrázku do rozhraní API.HttpEntity entity = MultipartEntityBuilder .create() .addBinaryBody("image", new File(imagePath)) .build();
Vytvořte
httpPost
objekt s koncovým bodem a nastavte hlavičku tak, aby používala klíč předplatného.HttpPost httpPost = new HttpPost(endpoint); httpPost.setHeader("Ocp-Apim-Subscription-Key", subscriptionKey); httpPost.setEntity(entity);
Příjem a zpracování odpovědi JSON
HttpClient.execute()
Pomocí metody odešlete požadavek do rozhraní API a uložte odpověď do objektuInputStream
.HttpResponse response = httpClient.execute(httpPost); InputStream stream = response.getEntity().getContent();
Uložte řetězec JSON a vytiskněte odpověď.
String json = new Scanner(stream).useDelimiter("\\A").next(); System.out.println("\nJSON Response:\n"); System.out.println(prettify(json));