我在理解锋利与旋转锯之间的关系时遇到了一些麻烦。
当前,我正在使用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的输出定向到磁盘上目标以外的任何其他位置。我正在寻找想法和例子,并在此先感谢!
答案 0 :(得分:0)
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
});