Codificación en base64

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

Uso de la línea de comandos

Dentro de una solicitud gRPC, puedes escribir directamente los datos binarios. Sin embargo, JSON se usa para realizar una solicitud REST. JSON es un formato de texto que no admite directamente datos de objetos binarios, por lo que deberás convertirlos en texto con la codificación Base64.

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

Linux

Codifica el archivo con la herramienta de línea de comandos de base64 y asegúrate de evitar el ajuste de línea con la marca -w 0:

base64 INPUT_FILE -w 0 > OUTPUT_FILE

macOS

Codifica el archivo con la herramienta de línea de comandos de base64:

base64 -i INPUT_FILE -o OUTPUT_FILE

Windows

Codifica el archivo con la herramienta Base64.exe:

Base64.exe -e INPUT_FILE > OUTPUT_FILE

PowerShell

Codifica el archivo con el método Convert.ToBase64String:

[Convert]::ToBase64String([IO.File]::ReadAllBytes("./INPUT_FILE")) > OUTPUT_FILE

Crea un archivo de solicitud JSON. Para eso, intercala los datos codificados en Base64:

JSON

{
  "requests": [
    {
      "image": {
        "content": "BASE64_ENCODED_DATA"
      },
      "features": [
        {
          "type": "LABEL_DETECTION",
          "maxResults": 1
        }
      ]
    }
  ]
}

Usa las bibliotecas cliente

La incorporación de datos de objetos binarios en solicitudes a través de editores de texto no es conveniente ni práctica. De hecho, deberás incorporar archivos codificados en Base64 dentro del código del cliente. Todos los lenguajes de programación compatibles tienen mecanismos incorporados para el contenido de codificación en Base64.

Python

# Import the base64 encoding library.
import base64

# Pass the image data to an encoding function.
def encode_image(image):
    with open(image, "rb") as image_file:
        encoded_string = base64.b64encode(image_file.read())
    return encoded_string

Node.js

// 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

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

// Encode the image.
String encodedString = Base64.getEncoder().encodeToString(imageFile.getBytes());

Go

import (
    "bufio"
    "encoding/base64"
    "io"
    "os"
)

// Open image file.
f, _ := os.Open("image.jpg")

// Read entire image into byte slice.
reader := bufio.NewReader(f)
content, _ := io.ReadAll(reader)

// Encode image as base64.
base64.StdEncoding.EncodeToString(content)