Maison > développement back-end > Golang > Comment encoder efficacement une image.Image redimensionnée en un []octet dans Go ?

Comment encoder efficacement une image.Image redimensionnée en un []octet dans Go ?

Patricia Arquette
Libérer: 2024-12-05 18:49:10
original
975 Les gens l'ont consulté

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

Décodage et encodage d'images à l'aide de Go

Dans Go, conversion d'une image d'un type image.Image en une tranche d'octets ([]byte ) est essentiel pour le stockage et la transmission des données d'image. Cet article présente un problème courant rencontré lors de cette conversion et propose une solution.

L'extrait de code fourni tente de télécharger une image à partir d'un bucket, de la décoder en image, de la redimensionner, puis de convertir l'image redimensionnée. image vers une tranche d'octets pour le téléchargement sur S3. Cependant, c'est dans la section en surbrillance du code que réside le problème.

// 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)
Copier après la connexion

Le problème est qu'un bufio.Writer est utilisé pour mettre les données en cache avant de les écrire sur un autre rédacteur, mais dans ce cas, nous avons besoin pour écrire directement dans une mémoire tampon. Pour résoudre ce problème, nous utilisons plutôt un bytes.Buffer, qui écrit dans la mémoire.

buf := new(bytes.Buffer)
err := jpeg.Encode(buf, new_image, nil)
send_s3 := buf.Bytes()
Copier après la connexion

En utilisant un bytes.Buffer, l'image redimensionnée est écrite directement dans la mémoire, créant ainsi la tranche d'octets adaptée à téléchargement sur S3. Cela permet au code d'encoder et de télécharger avec succès l'image redimensionnée dans le compartiment souhaité.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal