0

我正在开发一个应用程序,其中用户将头像上传到服务器,然后要求他裁剪图像。我只需要从流中获取图像大小,然后按百分比裁剪它。

这是我当前的代码,但到目前为止还没有工作:

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);
})

我究竟做错了什么?

4

1 回答 1

0

我从图像选择器库中获取图像尺寸,尺寸来自 multer。

  _imageCompressor = (_image, dimension) => {
        const { width, height } = dimension
        const modifiedImage = sharp(_image)
            .resize(Math.trunc(width), Math.trunc(height))
            .toBuffer()
        return modifiedImage
    }

我正在使用它来压缩我的图像而不裁剪它。尺寸是我要压缩图像 的宽度高度。_image是我想使用这个函数压缩的图像缓冲区我正在压缩图像

于 2019-05-16T11:42:33.350 回答