Melakukan enkode dan dekode base64 file

Melakukan enkode base64 gambar

Untuk membuat permintaan pembuatan gambar, Anda harus mengirim data gambar sebagai teks berenkode Base64.

Menggunakan command line

Dalam permintaan gRPC, Anda cukup menulis data biner secara langsung; tetapi JSON digunakan saat membuat permintaan REST. JSON adalah format teks yang tidak mendukung data biner secara langsung, sehingga Anda harus mengonversi data biner tersebut menjadi teks menggunakan encoding Base64.

Sebagian besar lingkungan pengembangan berisi utilitas base64 native untuk mengenkode biner ke dalam data teks ASCII. Untuk mengenkode file:

Linux

Enkode file menggunakan alat command line base64, yang memastikan untuk mencegah penggabungan baris menggunakan flag -w 0:

 base64 INPUT_FILE -w 0 > OUTPUT_FILE 

macOS

Enkode file menggunakan alat command line base64:

 base64 -i INPUT_FILE -o OUTPUT_FILE 

Windows

Enkode file menggunakan alat Base64.exe:

 Base64.exe -e INPUT_FILE > OUTPUT_FILE 

PowerShell

Enkode file menggunakan metode Convert.ToBase64String:

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

Buat file permintaan JSON, dengan menyisipkan data berenkode base64:

JSON

{   "instances": [     {       "prompt": "TEXT_PROMPT",       "image": {         "bytes_base64_encoded": "B64_BASE_IMAGE"       }     }   ] }

Menggunakan library klien

Menyematkan data biner ke dalam permintaan melalui editor teks bukanlah hal yang diinginkan atau praktis. Dalam praktiknya, Anda akan menyematkan file berenkode base64 dalam kode klien. Semua bahasa pemrograman yang didukung memiliki mekanisme bawaan untuk konten encoding 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) 

Mendekode base64 gambar

Permintaan API menampilkan gambar yang dihasilkan atau diedit sebagai string berenkode base64. Anda dapat menggunakan contoh library klien berikut untuk mendekode data ini dan menyimpannya secara lokal sebagai file gambar.

Python

# Import the base64 encoding library. import base64  # Pass the base64 encoded image data to a decoding function and save image file. def decode_image(b64_encoded_string):    with open("b64DecodedImage.png", "wb") as fh:      fh.write(base64.decodebytes(b64_encoded_string)) 

Node.js

var fs = require('fs');  // Create buffer object, specifying base64 as encoding var buf = Buffer.from(base64str,'base64');  // Write buffer content to a file fs.writeFile("b64DecodedImage.png", buf, function(error){   if(error){     throw error;   }else{     console.log('File created from base64 string');     return true;   } }); 

Java

// Import libraries import org.apache.commons.codec.binary.Base64; import org.apache.commons.io.FileUtils;  // Create new file File file = new File("./b64DecodedImage.png"); // Convert base64 encoded string to byte array byte[] bytes = Base64.decodeBase64("base64"); // Write out file FileUtils.writeByteArrayToFile(file, bytes); 

Go

// Import packages import (    "encoding/base64"    "io"    "os" )  // Add encoded file string var b64 = `TWFuIGlz...Vhc3VyZS4=`  // Decode base64-encoded string dec, err := base64.StdEncoding.DecodeString(b64) if err != nil {     panic(err) }  // Create output file f, err := os.Create("b64DecodedImage.png") if err != nil {     panic(err) } defer f.Close()  if _, err := f.Write(dec); err != nil {     panic(err) } if err := f.Sync(); err != nil {     panic(err) }