我想创建与 S3 中的图像对应的图像魔法对象。所以,我正在编写一个函数,它将接受必要的参数并返回图像魔法对象。但是,没有运气。这是我正在使用的Imagick 库。 func main() { mw := imagick.NewMagickWand() defer mw.Destroy() mw = ObjImagick(bucketName, keyName, region) } func ObjImagick(bktName string, kName string, region string) ( ) { s3Client := s3.New(session.New(), &aws.Config{Region: aws.String(region)}) params := &s3.GetObjectInput{ Bucket: aws.String(bktName), Key: aws.String(kName), } 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() defer mw.Destroy() err = mw.ReadImageBlob(img) if err != nil { log.Fatal(err) } return mw}
1 回答
沧海一幻觉
TA贡献1824条经验 获得超5个赞
好吧,NewMagickWand()返回 a *MagickWand,因此您可以创建您的函数,例如:
func ObjImagick(bktName string, kName string, region string) *imagick.MagickWand {
.......................
mw := imagick.NewMagickWand()
// defer mw.Destroy() this destroys the wand when ObjMagick returns.
// so you can't do this here, your func caller needs to handle destroying the object.
err = mw.ReadImageBlob(img)
if err != nil {
log.Fatal(err)
}
return mw
}
然后调用者必须调用.Destroy(),例如:
func main() {
mw := ObjImagick(bucketName, keyName, region)
defer mw.Destroy()
}
- 1 回答
- 0 关注
- 168 浏览
添加回答
举报
0/150
提交
取消