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)
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()
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!