【问题标题】:How to write a base64 decoded png image to file?如何将base64解码的png图像写入文件?
【发布时间】:2016-01-13 23:18:38
【问题描述】:

我尝试使用以下代码将 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))

边界没问题。最后一行的错误信息是

无法将 pngImage(类型 image.Image)转换为类型 []byte

显然,因为 image.Image 不是 byte[]。但我怎样才能转换它?或者是否有更简单的版本来执行此操作。

【问题讨论】:

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

标签: file go base64 png decoder


【解决方案1】:

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

最后一行应替换为:

err = png.Encode(imgFile, pngImage)

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

还可以查看这个答案,其中包含将图像写入文件(PNG 格式)的完整示例:

Draw a rectangle in Golang?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-04
    • 2014-01-19
    • 2020-07-23
    • 2016-03-31
    • 2014-08-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-14
    相关资源
    最近更新 更多