node.js - 我可以使用 sharp 和 multer 来调整图像大小并在一次操作中保存到磁盘吗?

标签 node.js express fs multer sharp

我在理解 sharp 和 multer 之间的关系时遇到了一些问题。

目前我正在使用 multer 从请求中提取图像并将其保存到磁盘。效果很好:

const upload = Multer({
  dest: './companyImages',
  fileFilter,
  limits: {
    fileSize: MAX_SIZE
  }
})

router
  .route('/images')
  .post(passportJWT, upload.array('files'), ImageUploadController.saveImage) 

我可以看到如何使用 sharp 从磁盘或流中读取文件并调整其大小,将其作为第二个文件保存到磁盘。然后我会使用 fs.unlink 删除第一个文件。

sharp('./companyImages/0d928a1a10f462f33b8fed1ea1a20eec.png')
  .resize(300, 200)
  .toFile('output.jpg', function(err) {
    // output.jpg is a 300 pixels wide and 200 pixels high image
    // containing a scaled and cropped version of input.jpg
  });

我更愿意将 multer 的输出传递给 sharp,然后用 sharp 转到磁盘。

问题 - 我还没有确定如何将 multer 的输出定向到磁盘上目标以外的任何地方。我正在寻找想法和示例,提前致谢!

最佳答案

multer 的插件可以在 here 中为您完成但不要使用 sharp 来调整大小。这是一个例子

const multer = require('multer');
const MulterResizer = require('multer-resizer');
const resizer = new MulterResizer({
    multer: multer({storage: multer.diskStorage({destination: './'})}),
    tasks: [
        {
            resize: {
                width: 1920,
                height: 1080,
                suffix: 'resized-big'
            }
        },
        {
            resize: {
                width: 100,
                height: 100,
                suffix: 'resized-small'
            }
        },
        {
            cover: {
                width: 160,
                height: 112,
                suffix: 'thumbnail'
            }
        }
    ]
});

router.post('/', auth.ensureAuthentication, resizer.single('file'), function(req, res, next) {
    // All multer-resizer tasks were completed
});

关于node.js - 我可以使用 sharp 和 multer 来调整图像大小并在一次操作中保存到磁盘吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53717616/

相关文章:

node.js - webpack - TypeError : dep. getResourceIdentifier 不是函数

javascript - Actor 错误 : Cast to ObjectId failed for value . 。 .` at path "问题”

node.js - Mongoose 不会增加数字字段

node.js - 使用 fs.readdir 和 fs.statSync 返回 ENOENT, no such file or directory 错误

javascript - 使用 nodejs 上传 blob

node.js - fs.existsSync 在 Electron 中使用时不是函数

javascript - Node.js - 浏览器化 : Error on parsing tar file

javascript - 为 javascript 打包并返回一个二进制字符串

node.js - nodejs : where session stores? 什么是connect-mongo?

javascript - 处理API调用中丢失的数据