Partilhar via


Início Rápido: Obter informações de imagens com a API REST e Java da Pesquisa Visual do Bing

Aviso

A 30 de outubro de 2020, as APIs de Pesquisa do Bing passaram dos serviços de IA do Azure para os Serviços Pesquisa do Bing. Esta documentação é fornecida apenas para referência. Para obter documentação atualizada, veja a documentação da API de pesquisa do Bing. Para obter instruções sobre como criar novos recursos do Azure para a pesquisa do Bing, veja Criar um recurso de Pesquisa do Bing através do Azure Marketplace.

Utilize este início rápido para fazer a sua primeira chamada à API de Pesquisa Visual do Bing. Esta aplicação Java carrega uma imagem para a API e apresenta as informações que devolve. Embora esta aplicação esteja escrita em Java, a API é um serviço Web RESTful compatível com a maioria das linguagens de programação.

Pré-requisitos

Criar um recurso do Azure

Comece a utilizar a API de Pesquisa Visual do Bing ao criar um dos seguintes recursos do Azure:

Pesquisa do Bing recurso v7

  • Disponível através do portal do Azure até eliminar o recurso.
  • Selecione o S9 escalão de preço.

Recurso de vários serviços

  • Disponível através do portal do Azure até eliminar o recurso.
  • Utilize a mesma chave e ponto final para as suas aplicações, em vários serviços de IA do Azure.

Criar e inicializar um projeto

  1. Crie um novo projeto Java no seu IDE ou editor favorito e importe as seguintes bibliotecas:

    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. Crie variáveis para o ponto final da API, a chave de subscrição e o caminho para a sua imagem. Para o endpoint valor, pode utilizar o ponto final global no seguinte código ou utilizar o ponto final de subdomínio personalizado apresentado no portal do Azure do recurso.

    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. Quando carrega uma imagem local, os dados do formulário têm de incluir o Content-Disposition cabeçalho. Defina o parâmetro name como "image" e defina o filename parâmetro para o nome de ficheiro da imagem. Os conteúdos do formulário incluem os dados binários da imagem. O tamanho máximo da imagem que pode carregar é de 1 MB.

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

Criar o analisador JSON

Crie um método para tornar a resposta JSON da API mais legível com 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);
    }

Criar a consulta e o pedido de pesquisa

  1. No método principal da sua aplicação, crie um cliente HTTP com HttpClientBuilder.create().build();.

    CloseableHttpClient httpClient = HttpClientBuilder.create().build();
    
  2. Crie um HttpEntity objeto para carregar a imagem para a API.

    HttpEntity entity = MultipartEntityBuilder
        .create()
        .addBinaryBody("image", new File(imagePath))
        .build();
    
  3. Crie um httpPost objeto com o ponto final e defina o cabeçalho para utilizar a chave de subscrição.

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

Receber e processar a resposta JSON

  1. Utilize o HttpClient.execute() método para enviar um pedido para a API e armazene a resposta num InputStream objeto.

    HttpResponse response = httpClient.execute(httpPost);
    InputStream stream = response.getEntity().getContent();
    
  2. Armazene a cadeia JSON e imprima a resposta.

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

Passos seguintes