我正在使用以下代码从 Amazon s3 中获取对象,并在执行调整大小和裁剪之后。我想将它存储在 s3 上。但问题是我无法将其转换mw (Image maigck object)为字节数组。这将用于将其存储在 s3 上。此外,在当前方法中,它使用 jpeg.Encode。如果图像为 .png 或 .gif 格式怎么办。我们将如何将其转换为 []byte?
您能否还告诉我如何仅通过纵横比而不是裁剪坐标来均匀裁剪图像。imgStream.Crop((int)originalWidth, ((int)(originalWidth / masterAspectRatio)), Gravity.Center)就像我们在 .net 中所做的那样。我问的原因是库中没有提供这种灵活性的方法。
s3Client := s3.New(session.New(), &aws.Config{Region: aws.String(region)})
params := &s3.GetObjectInput{
Bucket: aws.String(bucketName),
Key: aws.String(keyName),
}
out, err := s3Client.GetObject(params)
if err != nil {
log.Fatal(err)
}
img, err := ioutil.ReadAll(out.Body)
if err != nil {
log.Fatal(err)
}
mw := imagick.NewMagickWand()
err = mw.ReadImageBlob(img)
if err != nil {
log.Fatal(err)
}
//Perform resizing and cropping on mw object
buf := new(bytes.Buffer)
err = jpeg.Encode(buf, mw, nil)
sendmw_s3 := buf.Bytes()
paramsPut := &s3.PutObjectInput{
Bucket: aws.String(masterBucketName),
Key: aws.String(keyName),
Body: bytes.NewReader(sendmw_s3),
}
resp, err := s3Client.PutObject(paramsPut)
if err != nil {
log.Fatal(err)
}
错误 :
cannot use mw (type *imagick.MagickWand) as type image.Image in argument to jpeg.Encode:
*imagick.MagickWand does not implement image.Image (missing At method)
一只名叫tom的猫
天涯尽头无女友
相关分类