首页 >后端开发 >Golang >如何将Go image.Image转换为[]byte以便高效存储和传输?

如何将Go image.Image转换为[]byte以便高效存储和传输?

Patricia Arquette
Patricia Arquette原创
2024-12-20 05:46:10579浏览

How to Convert a Go image.Image to a []byte for Efficient Storage and Transmission?

Go 中将 Image.Image 转换为 []byte

Go 中进行图像处理时,可能需要在 image.Image 和 []byte 格式之间进行转换。这对于将图像存储在数据库中、通过网络发送图像或执行各种图像操作非常有用。

在您的特定情况下,您尝试使用调整大小包调整图像大小,然后将将 new_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.NewWriter 来包装 []byte 切片,这不符合您的目的。 bufio.Writer 设计用于将输出流式传输到 I/O 设备,而不是用于在内存中保存二进制数据。

要解决此问题,您应该使用 bytes.Buffer 来代替。 bytes.Buffer 提供了一个内存缓冲区,可用于构造 []byte 切片:

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

这段代码创建了一个名为 buf 的 bytes.Buffer 对象,并使用 jpeg.Encode 函数写入将图像数据调整大小到 buf 中。 buf 的 Bytes() 方法然后返回表示编码图像的原始字节数组。

通过此修改,您的代码将正确地将 new_image 转换为 []byte 数组,从而允许您成功将其上传到 S3 .

以上是如何将Go image.Image转换为[]byte以便高效存储和传输?的详细内容。更多信息请关注PHP中文网其他相关文章!

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