Maison > développement back-end > Golang > Comment convertir une « image.Image » Golang en « []byte » pour le téléchargement S3 ?

Comment convertir une « image.Image » Golang en « []byte » pour le téléchargement S3 ?

Linda Hamilton
Libérer: 2024-12-03 04:52:09
original
591 Les gens l'ont consulté

How to Convert a Golang `image.Image` to a `[]byte` for S3 Upload?

Conversion d'une image de image.Image au format []byte dans Golang

Cette question concerne la conversion d'une image représentée comme une image. Objet image dans un tableau d'octets, représenté par type []byte en Golang. Le défi spécifique est évident dans l'extrait de code fourni, où l'étape de conversion est marquée par des lignes pointillées.

// ...

original_image, _, err := image.Decode(bytes.NewReader(image_data))

new_image := resize.Resize(160, 0, original_image, resize.Lanczos3)

// Convert the image.Image to []byte here

new_path := key + "_sm"

err = mybucket.Put(new_path, send_S3, "image/jpg", "aclstring")
Copier après la connexion

Pour résoudre le problème, l'intention est de transformer l'image modifiée, stockée dans new_image, en un tableau d'octets, permettant de le transmettre au bucket S3 via la fonction Put.

Le remède réside dans l'utilisation du type bytes.Buffer, qui offre un tampon en mémoire pour écrire des données. Ce tampon sert de destination pour les données d'image codées en JPEG. En revanche, le bufio.Writer utilisé précédemment met simplement en cache les données avant de les transmettre à un écrivain sous-jacent, sans accumuler les données en mémoire.

Voici comment le code doit être ajusté :

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

Ce code mis à jour utilise un bytes.Buffer pour accumuler les données d'image codées en JPEG en mémoire, qui sont ensuite récupérées sous forme de tableau d'octets en appelant la méthode Bytes sur le tampon. Ce tableau d'octets peut maintenant être transmis à la fonction Put pour télécharger l'image dans le compartiment S3.

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