NodeJs将图片进行压缩生成缩略图
首先需要导入包sharp
和@img/sharp-win32-x64
npm install sharp
1
将其封装
const thumbnailImg = (filePath) => {
const imgPath = path.join(__dirname, filePath);
const output = `/icons/img.webp`;
const ThumbnailSizeLimit = 40;
return new Promise((resolve, reject) => {
if (fs.existsSync(output)) {
resolve(output)
} else {
sharp(imgPath).metadata().then((metadata) => {
// 得到宽高比
let aspectRatio = metadata.width / metadata.height;
// 读取原始图片
sharp(imgPath).resize(Math.floor(ThumbnailSizeLimit * aspectRatio), ThumbnailSizeLimit).toFile(output, (err, info) => {
if (err) {
console.error(err);
reject(err);
} else { resolve(output) }
});
})
}
});
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
然后导入使用
// 导入 sharp 包
const sharp = require("sharp");
// 生成缩略图
router.get('/thum', async (req, res, next) => {
const query = req.query;
let url = await thumbnailImg(`img.png`);
res.json({ code: 200, data: url, message: "操作成功!" });
} catch (error) {
console.log(error);
res.json({ code: 500, message: "发生未知错误" });
}
});
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
上次更新: 2024/01/30, 00:35:17
- 01
- linux 在没有 sudo 权限下安装 Ollama 框架12-23
- 02
- Express 与 vue3 使用 sse 实现消息推送(长连接)12-20