Sie können für die Vision API Bilddaten bereitstellen, indem Sie den URI-Pfad zum Bild angeben oder die Bilddaten als base64-codierten Text senden.
Befehlszeile verwenden
Innerhalb einer gRPC-Anfrage können Sie die Binärdaten einfach direkt ausschreiben. Bei einer REST-Anfrage müssen Sie jedoch JSON verwenden. JSON ist ein Textformat, das Binärdaten nicht direkt unterstützt, weshalb diese mit der Base64 in Text umgewandelt werden müssen.
Die meisten Entwicklungsumgebungen enthalten ein natives base64
-Dienstprogramm, um ein Binärbild als ASCII-Textdaten zu codieren. So codieren Sie eine Datei:
Linux
Codieren Sie die Datei mithilfe des base64
-Befehlszeilentools und achten Sie darauf, Zeilenumbrüche mithilfe des Flags -w 0
zu verhindern:
base64 INPUT_FILE -w 0 > OUTPUT_FILE
macOS
Codieren Sie die Datei mit dem base64
-Befehlszeilentool:
base64 -i INPUT_FILE -o OUTPUT_FILE
Windows
Codieren Sie die Datei mit dem Tool Base64.exe
:
Base64.exe -e INPUT_FILE > OUTPUT_FILE
PowerShell
Codieren Sie die Datei mit der Methode Convert.ToBase64String
:
[Convert]::ToBase64String([IO.File]::ReadAllBytes("./INPUT_FILE")) > OUTPUT_FILE
Erstellen Sie eine JSON-Anfragedatei, die die base64-codierten Daten enthält:
JSON
{ "requests": [ { "image": { "content": "BASE64_ENCODED_DATA" }, "features": [ { "type": "LABEL_DETECTION", "maxResults": 1 } ] } ] }
Clientbibliotheken verwenden
Binäre Daten mit Texteditoren in Anfragen einzubetten, ist weder wünschenswert noch praktisch. In der Praxis betten Sie base64-codierte Dateien in den Clientcode ein. Alle unterstützten Programmiersprachen haben integrierte Mechanismen für die base64-codierte Inhalte:
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);
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)