我在这里使用 Go resize 包:https://github.com/nfnt/resize
我正在从 S3 中提取图像,如下所示:
image_data, err := mybucket.Get(key) // this gives me data []byte
之后,我需要调整图像大小:
new_image := resize.Resize(160, 0, original_image, resize.Lanczos3) // problem is that the original_image has to be of type image.Image
将图像上传到我的 S3 存储桶
err : = mybucket.Put('newpath', new_image, 'image/jpg', 'aclstring') // problem is that new image needs to be data []byte
如何将数据 []byte
转换为 ---> image.Image
并返回 ----> data []byte
?
最佳答案
阅读 http://golang.org/pkg/image
// you need the image package, and a format package for encoding/decoding
import (
"bytes"
"image"
"image/jpeg" // if you don't need to use jpeg.Encode, use this line instead
// _ "image/jpeg"
"github.com/nfnt/resize"
)
// Decoding gives you an Image.
// If you have an io.Reader already, you can give that to Decode
// without reading it into a []byte.
image, _, err := image.Decode(bytes.NewReader(data))
// check err
newImage := resize.Resize(160, 0, original_image, resize.Lanczos3)
// Encode uses a Writer, use a Buffer if you need the raw []byte
err = jpeg.Encode(someWriter, newImage, nil)
// check err
关于image-processing - 去调整图像大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22940724/