Megosztás a következőn keresztül:


Rövid útmutató: Képelemzések lekérése a Bing Visual Search REST API és a Java használatával

Figyelmeztetés

2020. október 30-án a Bing Search API-k átkerültek az Azure AI-szolgáltatásokból a Bing Search Servicesbe. Ez a dokumentáció csak referenciaként szolgál. A frissített dokumentációt a Bing search API dokumentációjában találja. Az új Azure-erőforrások Bing-kereséshez való létrehozásával kapcsolatos útmutatásért lásd: Bing Search-erőforrás létrehozása a Azure Marketplace keresztül.

Ezzel a rövid útmutatóval kezdeményezheti első hívását a Bing Visual Search API-hoz. Ez a Java-alkalmazás feltölt egy képet az API-ba, és megjeleníti a visszaadott információkat. Bár ez az alkalmazás Java nyelven van megírva, az API egy RESTful webszolgáltatás, amely kompatibilis a legtöbb programozási nyelvvel.

Előfeltételek

Azure-erőforrás létrehozása

Kezdje el használni a Bing Visual Search API-t az alábbi Azure-erőforrások egyikének létrehozásával:

Bing Search v7-erőforrás

  • Az Azure Portal keresztül érhető el, amíg el nem törli az erőforrást.
  • Válassza ki a tarifacsomagot S9 .

Többszolgáltatásos erőforrás

  • Az Azure Portal keresztül érhető el, amíg el nem törli az erőforrást.
  • Használja ugyanazt a kulcsot és végpontot az alkalmazásokhoz több Azure AI-szolgáltatásban.

Projekt létrehozása és inicializálása

  1. Hozzon létre egy új Java-projektet a kedvenc IDE-jében vagy szerkesztőjében, és importálja a következő kódtárakat:

    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;
    
  2. Hozzon létre változókat az API-végponthoz, az előfizetési kulcshoz és a rendszerkép elérési útjához. endpoint Az értékhez használhatja a globális végpontot az alábbi kódban, vagy használhatja az erőforráshoz tartozó Azure Portal megjelenő egyéni altartományvégpontot.

    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";
    
  3. Helyi kép feltöltésekor az űrlapadatoknak tartalmazniuk kell a fejlécet Content-Disposition . Állítsa a paramétert name "image" értékre, és állítsa a filename paramétert a kép fájlnevére. Az űrlap tartalma tartalmazza a kép bináris adatait. A feltölthető maximális képméret 1 MB.

    --boundary_1234-abcd
    Content-Disposition: form-data; name="image"; filename="myimagefile.jpg"
    
    ÿØÿà JFIF ÖÆ68g-¤CWŸþ29ÌÄøÖ‘º«™æ±èuZiÀ)"óÓß°Î= ØJ9á+*G¦...
    
    --boundary_1234-abcd--
    

A JSON-elemző létrehozása

Hozzon létre egy metódust, amellyel olvashatóbbá teheti az API-ból érkező JSON-választ a használatával 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);
    }

A keresési kérelem és a lekérdezés összeállítása

  1. Az alkalmazás fő metódusában hozzon létre egy HTTP-ügyfelet a használatával HttpClientBuilder.create().build();.

    CloseableHttpClient httpClient = HttpClientBuilder.create().build();
    
  2. Hozzon létre egy objektumot HttpEntity , amellyel feltöltheti a képet az API-ba.

    HttpEntity entity = MultipartEntityBuilder
        .create()
        .addBinaryBody("image", new File(imagePath))
        .build();
    
  3. Hozzon létre egy httpPost objektumot a végponttal, és állítsa be a fejlécet az előfizetési kulcs használatára.

    HttpPost httpPost = new HttpPost(endpoint);
    httpPost.setHeader("Ocp-Apim-Subscription-Key", subscriptionKey);
    httpPost.setEntity(entity);
    

A JSON-válasz fogadása és feldolgozása

  1. HttpClient.execute() A metódussal kérést küldhet az API-nak, és tárolhatja a választ egy InputStream objektumban.

    HttpResponse response = httpClient.execute(httpPost);
    InputStream stream = response.getEntity().getContent();
    
  2. Tárolja a JSON-sztringet, és nyomtassa ki a választ.

    String json = new Scanner(stream).useDelimiter("\\A").next();
    System.out.println("\nJSON Response:\n");
    System.out.println(prettify(json));
    

Következő lépések