Heim > Backend-Entwicklung > Golang > Wie kodiere ich ein in der Größe geändertes Bild effizient in ein [] Byte in Go?

Wie kodiere ich ein in der Größe geändertes Bild effizient in ein [] Byte in Go?

Patricia Arquette
Freigeben: 2024-12-05 18:49:10
Original
978 Leute haben es durchsucht

How to Efficiently Encode a Resized image.Image to a []byte in Go?

Bilder mit Go dekodieren und kodieren

In Go wird ein Bild vom Typ image.Image in ein Byte-Slice ([]Byte) konvertiert ) ist für die Speicherung und Übertragung von Bilddaten unerlässlich. Dieser Artikel beschreibt ein häufiges Problem, das bei dieser Konvertierung auftritt, und bietet eine Lösung.

Das bereitgestellte Code-Snippet versucht, ein Bild aus einem Bucket herunterzuladen, es in ein Bild zu dekodieren, seine Größe zu ändern und dann die geänderte Größe zu konvertieren Bild zurück in ein Byte-Slice zum Hochladen auf S3. Allerdings liegt das Problem im hervorgehobenen Abschnitt des Codes.

// 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 ein bufio.Writer zum Zwischenspeichern von Daten verwendet wird, bevor sie an einen anderen Writer geschrieben werden, aber in diesem Fall benötigen wir direkt in einen Speicherpuffer schreiben. Um dieses Problem zu lösen, verwenden wir stattdessen einen bytes.Buffer, der in den Speicher schreibt.

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

Durch die Verwendung eines bytes.Buffer wird das in der Größe geänderte Bild direkt in den Speicher geschrieben, wodurch das geeignete Byte-Slice erstellt wird Hochladen auf S3. Dadurch kann der Code das in der Größe geänderte Bild erfolgreich kodieren und in den gewünschten Bucket hochladen.

Das obige ist der detaillierte Inhalt vonWie kodiere ich ein in der Größe geändertes Bild effizient in ein [] Byte in Go?. 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