Codifica dei dati delle immagini con Base64

Puoi fornire i dati immagine per la previsione all'API Vertex AI inviandoli come testo con codifica base64.

Utilizzo della riga di comando

All'interno di una richiesta gRPC, puoi semplicemente scrivere direttamente i dati binari. Tuttavia, quando viene effettuata una richiesta REST, viene utilizzato JSON. JSON è un formato di testo che non supporta direttamente i dati binari, pertanto dovrai convertirli in testo utilizzando la codifica Base64.

La maggior parte degli ambienti di sviluppo contiene un'utilità base64 nativa per 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

{
  "instances": [
    {
      "content": "BASE64_ENCODED_DATA"
    }
  ],
  "parameters": {
    "confidenceThreshold": DECIMAL,
    "maxPredictions": INTEGER
  }
}

Utilizzo delle librerie client

L'inserimento di dati binari nelle richieste tramite editor di testo non è né auspicabile né pratico. In pratica, incorporerai i file con codifica base64 nel codice client. Tutti i linguaggi di programmazione supportati dispongono di meccanismi integrati per la codifica dei contenuti in 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());

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)