Maison >développement back-end >Golang >Comment convertir une image.Image Go en []byte pour un stockage et une transmission efficaces ?

Comment convertir une image.Image Go en []byte pour un stockage et une transmission efficaces ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-20 05:46:10579parcourir

How to Convert a Go image.Image to a []byte for Efficient Storage and Transmission?

Convertir Image.Image en []byte dans Go

Lorsque vous traitez le traitement d'image dans Go, vous devrez peut-être convertir entre les formats image.Image et []byte . Cela peut être utile pour stocker des images dans une base de données, les envoyer par câble ou effectuer diverses opérations sur les images.

Dans votre cas spécifique, vous essayez de redimensionner une image à l'aide du package resize, puis de convertir le new_image modifié en un tableau []byte pour le téléchargement vers un compartiment S3. Cependant, votre code contient un problème critique souligné ci-dessous :

// 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 que vous utilisez bufio.NewWriter pour envelopper une tranche de []byte, ce qui n'est pas correct pour votre objectif. bufio.Writer est conçu pour diffuser la sortie vers un périphérique d'E/S, et non pour conserver des données binaires en mémoire.

Pour résoudre ce problème, vous devez plutôt utiliser un bytes.Buffer. bytes.Buffer fournit un tampon en mémoire qui peut être utilisé pour construire une []byte slice :

buf := new(bytes.Buffer)
err := jpeg.Encode(buf, new_image, nil)
send_S3 := buf.Bytes()

Ce code crée un objet bytes.Buffer nommé buf et utilise la fonction jpeg.Encode pour écrire le redimensionné les données d'image en buf. La méthode Bytes() de buf renvoie ensuite le tableau d'octets brut représentant l'image encodée.

Avec cette modification, votre code convertira correctement la new_image en un tableau []byte, vous permettant de la télécharger avec succès sur 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!

Déclaration:
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