首页 >后端开发 >Golang >如何在 Go 中有效地将调整大小的 image.Image 编码为 []byte?

如何在 Go 中有效地将调整大小的 image.Image 编码为 []byte?

Patricia Arquette
Patricia Arquette原创
2024-12-05 18:49:10977浏览

How to Efficiently Encode a Resized image.Image to a []byte in Go?

使用Go对图像进行解码和编码

在Go中,将图像从image.Image类型转换为字节切片([]byte) )对于存储和传输图像数据至关重要。本文介绍了此转换过程中遇到的常见问题并提供了解决方案。

提供的代码片段尝试从存储桶中下载图像,将其解码为图像,调整其大小,然后转换调整后的图像图像返回字节切片以上传到 S3。然而,代码中突出显示的部分就是问题所在。

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

问题在于 bufio.Writer 用于在将数据写入另一个 writer 之前对其进行缓存,但在这种情况下,我们需要直接写入内存缓冲区。为了解决这个问题,我们使用 bytes.Buffer 来代替,它将写入内存。

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

通过使用 bytes.Buffer,调整大小的图像将直接写入内存,创建适合的字节切片上传到S3。这允许代码成功编码并将调整大小的图像上传到所需的存储桶。

以上是如何在 Go 中有效地将调整大小的 image.Image 编码为 []byte?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn