使用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中文网其他相关文章!