Codificación en base64

Puedes proporcionar datos de imagen a la API de Cloud Vision si especificas la ruta URI a la imagen o si envías los datos de imagen como texto codificado en base64.

La mayoría de los entornos de desarrollo contienen una utilidad “base64” nativa para codificar una imagen binaria en datos de texto ASCII. Para codificar un archivo de imagen, haz lo siguiente:

Linux

    base64 input.jpg > output.txt

macOS

    base64 -i input.jpg -o output.txt

Windows

    C:> Base64.exe -e input.jpg > output.txt

PowerShell

    [Convert]::ToBase64String([IO.File]::ReadAllBytes("./input.jpg")) > output.txt

A continuación, puedes usar estos datos de imagen de salida de forma nativa dentro de la solicitud JSON:

{
  "requests": [
    {
      "image": {
        "content": "BASE64_ENCODED_DATA"
      },
      "features": [
        {
          "type": "PRODUCT_SEARCH"
        }
      ],
      "imageContext": {
        "productSearchParams": {
          "productSet": "projects/project-id/locations/location-id/productSets/product-set-id",
          "productCategories": [
               "apparel"
             ],
        "filter": "style=... AND color=..."
        }
      }
    }
  ]
}

Cada lenguaje de programación tiene su propia forma de codificar archivos de imagen en base64:

Python

En Python, puedes codificar archivos de imagen en base64 de la siguiente manera:

# Import the base64 encoding library.
import base64

# Pass the image data to an encoding function.
def encode_image(image):
  image_content = image.read()
  return base64.b64encode(image_content)

Node.js

En Node.js, puedes codificar archivos de imagen en base64 de la siguiente manera:

// Read the file into memory.
var fs = require('fs');
var imageFile = fs.readFileSync('/path/to/file');

// Convert the image data to a Buffer and base64 encode it.
var encoded = Buffer.from(imageFile).toString('base64');

Java

En Java, puedes codificar archivos de imagen en base64 de la siguiente manera:

// Import the Base64 encoding library.
import org.apache.commons.codec.binary.Base64;

// Encode the image.
byte[] imageData = Base64.encodeBase64(imageFile.getBytes());