我正在开发一个应用程序,其中用户将头像上传到服务器,然后要求他裁剪图像。我所需要做的就是从流中获取图像大小,然后按百分比裁剪。
这是我当前的代码,但到目前为止无法正常工作:
router.use('/', (req, res) => {
//Crop parameters, these will be providen by user directly
const parameters = {
left: 0.5, //crop from left percentage
top: 0.2, //crop from top percentage
size: 0.5 //size percentage (extracted from width)
}
const fileStream = s3.getObject({
Bucket: '<my-bucket-name>',
Key: fileKey
}).createReadStream();
let imageInfo;
const infoTransformer = sharp().on('info', info => {
imageInfo = info;
})
const cropTransformer = sharp().extract({
left: parameters.left * imageInfo.width,
top: parameters.top * imageInfo.height,
width: parameters.size * imageInfo.width,
height: parameters.size * imageInfo.width
});
return fileStream.pipe(infoTransformer).pipe(cropTransformer).pipe(res);
})
我在做什么错了?
答案 0 :(得分:0)
我正在从图像选择器库中获得图像尺寸,并且尺寸是从混合器中获得的。
_imageCompressor = (_image, dimension) => {
const { width, height } = dimension
const modifiedImage = sharp(_image)
.resize(Math.trunc(width), Math.trunc(height))
.toBuffer()
return modifiedImage
}
我正在使用它来压缩我的图像而不裁剪它。 尺寸是要在其中压缩图像的宽度和高度。 _image 是我要压缩的图像缓冲区 使用此功能,我正在压缩图像