Я разрабатываю приложение, в котором пользователь загружает аватар на сервер, а затем ему предлагается обрезать изображение. Все, что мне нужно, это получить размер изображения из потока и затем обрезать его в процентах.
Это мой текущий код, но он пока не работает:
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);
})
Что я делаю не так?