Conversion d'une Image.Image en []byte dans Golang
Lorsque vous travaillez avec le traitement d'image dans Golang, il est parfois nécessaire de convertir un objet image.Image dans un tableau d'octets ([]byte) pour faciliter son stockage ou sa transmission. Un scénario courant consiste à redimensionner une image et à la télécharger sur un service de stockage d'objets comme Amazon S3.
Pendant le traitement de l'image, le format des données de l'image doit être modifié de []octet à image.Image et revenir à []octet. La difficulté survient lors de la tentative de conversion de l'image.Image redimensionnée (new_image) en []byte pour le téléchargement sur S3.
Solution :
Pour résoudre ce problème, au lieu d'utiliser un bufio.Writer, qui agit comme une couche de mise en cache, utilisez un bytes.Buffer. Le bytes.Buffer écrit les données directement dans la mémoire, ce qui le rend approprié pour capturer les données d'image codées dans un tableau d'octets.
Extrait de code :
L'extrait de code suivant illustre comment convertir l'image.Image redimensionnée (new_image) en un []octet à l'aide d'un bytes.Buffer :
import ( // Import necessary Go packages ) func main() { // Establish S3 connection (if necessary) // Get image data from S3 (already in []byte format) // ... processing to resize the image ... // Create a bytes.Buffer to capture the encoded image data buf := new(bytes.Buffer) // Encode the resized image using JPEG format err := jpeg.Encode(buf, new_image, nil) if err != nil { // Handle error } // Convert the bytes.Buffer contents to a byte array send_S3 := buf.Bytes() // ... upload to S3 (using send_S3 as the image data) ... }
En exploitant bytes.Buffer, l'image redimensionnée est convertie avec succès en un tableau []byte, permettant son téléchargement sur Amazon 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!