我已经使用Mongo网格fs和node js将图像文件存储到mongo数据库中。现在我想调整流中图像的大小
我想实现以下尺寸
320x240px
900x600px
150x100px
gfs.findOne({ filename: req.params.filename }, function (err, file) {
if (file) {
const readstream = gfs.createReadStream(file.filename);
readstream.on('data', (chunk) => {
}).pipe(res)
}
});
}```
答案 0 :(得分:2)
我也遇到过同样的问题,但是还没有找到直接处理图像流的NPM库。一种解决方案是在本地复制文件(如果可能的话),然后使用jimp
之类的库进行转换。
以下是调整本地image.png
文件大小的完整工作示例:
import fs from "fs";
import jimp from "jimp";
import path from "path";
function resizeImage(fileName) {
return new Promise(function(resolve, reject) {
jimp.read(fileName, function(err, image) {
if (err) {
reject(err);
} else {
let extension = path.parse(fileName).ext;
let name = path.parse(fileName).name;
let resizedFileName = name + "_resized" + extension;
image.resize(320, 240)
.write(resizedFileName);
resolve(resizedFileName);
}
});
});
}
(async function() {
let fileName = "image.png";
let newFileName = await resizeImage(fileName);
console.log(newFileName + " generated");
})();
其他工作将是在启动转换之前将流复制到文件(并最终删除复制/生成的本地文件)。
希望有帮助。