Heim > Backend-Entwicklung > Golang > Wie konvertiere ich ein Go image.Image in ein []Byte für eine effiziente Speicherung und Übertragung?

Wie konvertiere ich ein Go image.Image in ein []Byte für eine effiziente Speicherung und Übertragung?

Patricia Arquette
Freigeben: 2024-12-20 05:46:10
Original
577 Leute haben es durchsucht

How to Convert a Go image.Image to a []byte for Efficient Storage and Transmission?

Image.Image in []Byte in Go konvertieren

Bei der Bildverarbeitung in Go müssen Sie möglicherweise zwischen den Formaten image.Image und []Byte konvertieren . Dies kann nützlich sein, um Bilder in einer Datenbank zu speichern, sie über die Leitung zu senden oder verschiedene Bildoperationen durchzuführen.

In Ihrem speziellen Fall versuchen Sie, die Größe eines Bildes mithilfe des Resize-Pakets zu ändern und es dann zu konvertieren new_image in ein []Byte-Array zum Hochladen in einen S3-Bucket geändert. Ihr Code enthält jedoch ein kritisches Problem, das unten hervorgehoben wird:

// 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)
Nach dem Login kopieren

Das Problem besteht darin, dass Sie bufio.NewWriter zum Umschließen eines []Byte-Slices verwenden, was für Ihren Zweck falsch ist. bufio.Writer ist für die Streaming-Ausgabe an ein E/A-Gerät konzipiert und nicht für die Speicherung von Binärdaten im Speicher.

Um dieses Problem zu beheben, sollten Sie stattdessen einen bytes.Buffer verwenden. bytes.Buffer stellt einen speicherinternen Puffer bereit, der zum Erstellen eines []Byte-Slices verwendet werden kann:

buf := new(bytes.Buffer)
err := jpeg.Encode(buf, new_image, nil)
send_S3 := buf.Bytes()
Nach dem Login kopieren

Dieser Code erstellt ein bytes.Buffer-Objekt mit dem Namen buf und verwendet die jpeg.Encode-Funktion zum Schreiben des Größe der Bilddaten in Puffer geändert. Die Bytes()-Methode von buf gibt dann das rohe Byte-Array zurück, das das codierte Bild darstellt.

Mit dieser Änderung konvertiert Ihr Code das neue_Bild korrekt in ein []Byte-Array, sodass Sie es erfolgreich auf S3 hochladen können .

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

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage