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