Heim >Backend-Entwicklung >Golang >Wie konvertiere ich ein image.Image in []Byte in Go für S3-Upload?

Wie konvertiere ich ein image.Image in []Byte in Go für S3-Upload?

Susan Sarandon
Susan SarandonOriginal
2024-11-30 21:13:18854Durchsuche

How to Convert an image.Image to []byte in Go for S3 Upload?

Konvertieren von image.Image in []Byte in Golang

In diesem Artikel befassen wir uns mit dem Problem der Konvertierung eines image.Image in [ ]Byte in Go. Der Problempunkt liegt in den durch gepunktete Linien gekennzeichneten Zeilen im bereitgestellten Codeausschnitt:

image_data, err := mybucket.Get(key)

if err != nil {
    panic(err.Error())
}

// reset format of data []byte to image.Image

original_image, _, err := image.Decode(bytes.NewReader(image_data))

new_image := resize.Resize(160, 0, original_image, resize.Lanczos3)
- - - - - - - - - - - - - - - - - - - - - - - - - - -
// reset format the image.Image to data []byte here
var send_S3 []byte
var byteWriter = bufio.NewWriter(send_S3)
- - - - - - - - - - - - - - - - - - - - - - - - - -
err = jpeg.Encode(byteWriter, new_image, nil)

new_path := key + "_sm"

err = mybucket.Put(new_path, send_S3, "image/jpg", "aclstring")

Das Ziel besteht darin, das image.Image, new_image, in das []Byte-Format zum Hochladen in einen S3-Bucket umzuwandeln.

Lösung

Der Schlüssel zur Lösung dieses Problems besteht darin, stattdessen einen bytes.Buffer zu verwenden eines bufio.Schriftstellers. bytes.Buffer wurde entwickelt, um Daten in den Speicher zu schreiben, während bufio.Writer Daten einfach im Speicher zwischenspeichert, bevor sie an einen anderen Writer weitergegeben werden.

buf := new(bytes.Buffer)
err := jpeg.Encode(buf, new_image, nil)
send_s3 := buf.Bytes()

Durch den Einsatz von bytes.Buffer erfassen wir effektiv das codierte Bild ein []Byte-Slice mit dem Namen send_s3. Dieses Slice kann dann zum Hochladen des Bildes in den S3-Bucket verwendet werden.

Das obige ist der detaillierte Inhalt vonWie konvertiere ich ein image.Image in []Byte in Go für S3-Upload?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn