Merge branch 'main' of github.com:LCJ-MinYa/sharp_img into main
commit
798524ccaa
@ -0,0 +1,64 @@
|
||||
const sharp = require('sharp');
|
||||
const fs = require('fs');
|
||||
const path = require('path');
|
||||
const { getInputDir } = require('../utils/index');
|
||||
const { cover } = require('../config/index');
|
||||
|
||||
//工作目录文件夹路径
|
||||
let inputDir = getInputDir();
|
||||
const previewDir = `${inputDir}/预览图`;
|
||||
if (!inputDir || !previewDir) {
|
||||
console.log('未执行裁剪主图功能,工作目录不存在');
|
||||
return;
|
||||
}
|
||||
|
||||
async function reduceImgSize(imgPath, tempImgPath, size) {
|
||||
let { width } = await sharp(imgPath).metadata();
|
||||
if (size > 3 && size < 5) {
|
||||
console.log('压缩方式1');
|
||||
return sharp(imgPath).jpeg({ quality: 90 }).toFile(tempImgPath);
|
||||
}
|
||||
|
||||
if (size >= 5 && size < 10) {
|
||||
console.log('压缩方式2');
|
||||
return sharp(imgPath)
|
||||
.resize(width / 1.2)
|
||||
.jpeg({ quality: 90 })
|
||||
.toFile(tempImgPath);
|
||||
}
|
||||
if (size >= 10) {
|
||||
console.log('压缩方式3');
|
||||
return sharp(imgPath)
|
||||
.resize(width / 2)
|
||||
.jpeg({ quality: 90 })
|
||||
.toFile(tempImgPath);
|
||||
}
|
||||
}
|
||||
|
||||
fs.readdirSync(previewDir).forEach(async (file) => {
|
||||
const ext = file.split('.').pop().toLowerCase();
|
||||
if (cover.imgFormat.has(ext)) {
|
||||
const imgPath = path.join(previewDir, file);
|
||||
|
||||
const size = fs.statSync(imgPath).size;
|
||||
// 将字节转换为 MB
|
||||
const fileSizeInMB = size / (1024 * 1024);
|
||||
if (fileSizeInMB > 3) {
|
||||
const tempImgPath = path.join(previewDir, `${file}_temp`);
|
||||
reduceImgSize(imgPath, tempImgPath, fileSizeInMB)
|
||||
.then(() => {
|
||||
// 处理完后,将临时文件重命名为原始文件
|
||||
fs.rename(tempImgPath, imgPath, (err) => {
|
||||
if (err) {
|
||||
console.error('重命名失败:', err);
|
||||
} else {
|
||||
console.log('压缩图片成功,文件已被覆盖:', imgPath);
|
||||
}
|
||||
});
|
||||
})
|
||||
.catch((err) => {
|
||||
console.error('发生错误:', err);
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
Loading…
Reference in New Issue