Puoi fornire i dati di immagine all'API Cloud Vision specificando il percorso dell'URI dell'immagine o inviando i dati di immagine come testo codificato in base64.
Utilizzo della riga di comando
All'interno di una richiesta gRPC, puoi semplicemente scrivere direttamente i dati binari. Tuttavia, JSON viene utilizzato quando viene eseguita una richiesta REST. JSON è un formato di testo che non supporta direttamente i dati binari, quindi dovrete convertire tali dati binari in testo utilizzando Codifica Base64.
La maggior parte degli ambienti di sviluppo contiene un'utilità base64
nativa
Codificare un file binario in dati di testo ASCII. Per codificare un file:
Linux
Codifica il file utilizzando lo strumento a riga di comando base64
, assicurandoti di
impedire il rientro a capo utilizzando il flag -w 0
:
base64 INPUT_FILE -w 0 > OUTPUT_FILE
macOS
Codifica il file utilizzando lo strumento a riga di comando base64
:
base64 -i INPUT_FILE -o OUTPUT_FILE
Windows
Codifica il file utilizzando lo strumento Base64.exe
:
Base64.exe -e INPUT_FILE > OUTPUT_FILE
PowerShell
Codifica il file utilizzando il metodo Convert.ToBase64String
:
[Convert]::ToBase64String([IO.File]::ReadAllBytes("./INPUT_FILE")) > OUTPUT_FILE
Crea un file di richiesta JSON con i dati codificati in base64 in linea:
JSON
{ "requests": [ { "image": { "content": "BASE64_ENCODED_DATA" }, "features": [ { "type": "PRODUCT_SEARCH" } ], "imageContext": { "productSearchParams": { "productSet": "projects/PROJECT_ID/locations/LOCATION/productSets/PRODUCT_SET_ID", "productCategories": [ "apparel" ], "filter": "style=... AND color=..." } } } ] }
Utilizzo delle librerie client
Non incorporare dati binari nelle richieste tramite editor di testo desiderabile o pratico. In pratica, incorporerai i file con codifica base64 nel codice client. Tutti i linguaggi di programmazione supportati hanno meccanismi integrati per i contenuti con codifica 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.
byte[] imageData = Base64.encodeBase64(imageFile.getBytes());
String encodedString = Base64.getEncoder().encodeToString(imageData);
Vai
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)