2 回答
TA贡献1906条经验 获得超3个赞
您需要使用该func (mw *MagickWand) GetImageBlob() []byte
功能。
它返回包含当前文件格式(JPEG、gif、PNG...)的完整编码图像的字节切片。
因此,返回的数据可以保存到磁盘,或按原样发送到 s3。
有关文档,请参阅https://gowalker.org/github.com/gographics/imagick/imagick#MagickWand_GetImageBlob。
TA贡献1831条经验 获得超9个赞
这个问题实际上是两个问题,@SirDarius 通过建议使用GetImageBlob(). 您还可以使用SetImageFormat()在生成 blob 之前更改图像格式。
对于关于裁剪的部分,我相信 ImageMagick 有很多方法可以做到这一点。我这样做的方法是,实现中心裁剪是首先转换图像,使较小的尺寸适合我想要的目标分辨率。然后裁剪掉溢出的部分。
// Create a new image where smallest dimension is fit
// and the rest overflows the dimensions
size := fmt.Sprintf("%dx%d^+0+0", w, h)
tx := wand.TransformImage("", size)
// Center Crop away the extra parts of the image, to perform
tx.SetImageGravity(imagick.GRAVITY_CENTER)
offsetX := -(int(w) - int(tx.GetImageWidth())) / 2
offsetY := -(int(h) - int(tx.GetImageHeight())) / 2
err := tx.ExtentImage(w, h, offsetX, offsetY)
...
- 2 回答
- 0 关注
- 306 浏览
添加回答
举报