Golang 将 image.Image 转换为 []byte

标签 go

无法将 image.Image 转换为 []byte。问题点用虚线包裹。

image_data, err := mybucket.Get(key)

if err != nil {
    panic(err.Error())
}

// reset format of data []byte to image.Image

original_image, _, err := image.Decode(bytes.NewReader(image_data))

new_image := resize.Resize(160, 0, original_image, resize.Lanczos3)
- - - - - - - - - - - - - - - - - - - - - - - - - - -
// 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)

new_path := key + "_sm"

err = mybucket.Put(new_path, send_S3, "image/jpg", "aclstring")

基本上,我需要 new_image 为 []byte 格式,以便我可以将其发送到我的 S3 存储桶。

感谢您的帮助。

最佳答案

你需要一个 bytes.Buffer,而不是 bufio.Writer。 bytes.Buffer 在您需要写入内存的写入器时使用。 bufio.Writer 只是在将数据转发给另一个 writer 之前将数据缓存在内存中。

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

关于Golang 将 image.Image 转换为 []byte,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22945486/

相关文章:

regex - 正则表达式找到具有优先顺序的匹配项?

go - 我无法创建长链接列表

go - 随着时间的流逝如何进行操纵?

go - 根据类型断言等返回参数的数量更改行为

sqlite - 在 docker 容器中运行 go binary 时找不到 Spatialite 扩展

go - 如何离线获取golang编程之旅

hash - Golang 使用 MD5 编码字符串 UTF16 little endian 和哈希

http - 如果请求在 http.Server 中超时,为什么在 Firefox 中会无限期地重复?

golang RFC2822转换

git - 如何设置 GoReleaser 将 brew tap 推送到不同的存储库