Puedes proporcionar datos de imagen a la API Vision especificando la ruta del URI de la imagen o enviando los datos de la imagen como texto codificado en Base64.
Usar la línea de comandos
En una solicitud gRPC, puedes escribir datos binarios directamente. Sin embargo, se usa JSON al hacer una solicitud REST. JSON es un formato de texto que no admite directamente datos binarios, por lo que tendrás que convertir esos datos en texto mediante la codificación Base64.
La mayoría de los entornos de desarrollo contienen una utilidad base64
nativa para codificar un archivo binario en datos de texto ASCII. Para codificar un archivo, sigue estos pasos:
Linux
Codifica el archivo con la herramienta de línea de comandos base64
. Asegúrate de evitar el salto 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 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 insertando los datos codificados en base64:
JSON
{ "requests": [ { "image": { "content": "BASE64_ENCODED_DATA" }, "features": [ { "type": "LABEL_DETECTION", "maxResults": 1 } ] } ] }
Usar bibliotecas de cliente
No es recomendable ni práctico insertar datos binarios en solicitudes a través de editores de texto. En la práctica, insertarás archivos codificados en base64 en el código del cliente. Todos los lenguajes de programación admitidos tienen mecanismos integrados para codificar contenido 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)