如何将base64解码的png图像写入文件?

问题描述:

我尝试写一个base64 PNG图片下面的代码文件:如何将base64解码的png图像写入文件?

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)) 

的界限都OK。最后一行的错误消息是

不能转换pngImage(类型image.Image)至显然键入[]字节

,因为image.Image不是字节[]。但是,我该如何转换它?还是有更简单的版本来做到这一点。

+0

你,你需要有解码后的图像?将数据直接写入文件要快得多。如果你只想要边界,你可以使用DecodeConfig。 – JimB

使用png.Encode()image.Image编码为文件(io.Writer)。

最后一行应替换:

err = png.Encode(imgFile, pngImage) 

png.Encode()将产生和发送该字节序列到指定io.Writer(其可以是当然的os.File),描述在PNG格式的指定的图像。

还检查了这个答案包含一个完整的例子写一个图像文件(PNG格式):

Draw a rectangle in Golang?