2015-10-15 1 views
1

J'essaie d'écrire une image base64 png fichier avec le code suivant:Comment écrire une image png décodée en base64 dans un fichier?

imageReader := base64.NewDecoder(base64.StdEncoding, strings.NewReader(Images[i])) 
pngImage, _, err := image.Decode(imageReader) 
if err != nil { 
    beego.Error(err) 
} 
bounds := pngImage.Bounds() 
if imgFile, err = os.Create(fileName + ".png"); err != nil { 
    return Data{} 
} 
defer imgFile.Close() 
_, err = imgFile.Write([]byte(pngImage)) 

Les bornes sont ok. Le message d'erreur pour la dernière ligne est

ne peuvent pas convertir pngImage (type image.Image) taper [] octet

De toute évidence, parce qu'un image.Image n'est pas un octet []. Mais comment puis-je le convertir? Ou y a-t-il même une version plus simple pour cela?

+0

-vous que vous devez avoir l'image décodée? Il est beaucoup plus rapide d'écrire les données directement dans le fichier. Si vous voulez seulement les limites, vous pouvez utiliser DecodeConfig. – JimB

Répondre

5

Utilisez png.Encode() pour coder un image.Image dans un fichier (io.Writer).

La dernière ligne doit être remplacé par:

err = png.Encode(imgFile, pngImage) 

png.Encode() produira et envoyer la séquence d'octets à la spécifiée io.Writer (qui peut être un os.File bien sûr), décrivant l'image spécifiée au format PNG.

Consultez également cette réponse qui contient un exemple complet d'écrire une image dans un fichier (au format PNG):

Draw a rectangle in Golang?