Heim >Backend-Entwicklung >Golang >Wie konvertiere ich ein image.Image in []Byte in Go für 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!