【问题标题】:How to covert a []byte object to an image and store it as a jpeg image on disk如何将 []byte 对象转换为图像并将其作为 jpeg 图像存储在磁盘上
【发布时间】:2019-03-27 13:35:46
【问题描述】:

我正在尝试将 []byte 对象转换为图像并将其保存为 Golang 中的 jpeg。我尝试使用图像的Decode 函数,但它总是返回<nil>

func saveFrames(imgByte []byte) {
    img, _, _ := image.Decode(bytes.NewReader(imgByte))
   out, err := os.Create("./img.jpeg")

   if err != nil {
             fmt.Println(err)
             os.Exit(1)
   }
   err = jpeg.Encode(out, img)
   if err != nil {
            fmt.Println(err)
            os.Exit(1)
   }
}

【问题讨论】:

标签: image go jpeg


【解决方案1】:

你没有将Options传递给jpeg.Encode,你也可以设置为nil。

func serveFrames(imgByte []byte) {

    img, _, err := image.Decode(bytes.NewReader(imgByte))
    if err != nil {
        log.Fatalln(err)
    }

    out, _ := os.Create("./img.jpeg")
    defer out.Close()

    var opts jpeg.Options
    opts.Quality = 1

    err = jpeg.Encode(out, img, &opts)
    //jpeg.Encode(out, img, nil)
    if err != nil {
        log.Println(err)
    }

}

如果打开了任何文件,请不要忘记关闭。

您可以使用log.Fatalln(...),如果您想打印错误消息并在出现任何错误时退出。

【讨论】:

  • 2018/10/23 14:03:42 JPEG 格式无效:短霍夫曼数据收到此错误:
  • @shahidammer,imgByte 中的数据应该是某些图像的数据
  • 质量 1?即使是 100 看起来也很糟糕。难道没有更好的方法不玩质量?还是依赖字节数?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-02
  • 2011-10-31
  • 2017-10-21
  • 2017-05-04
相关资源
最近更新 更多