diff --git a/src/product_cover_img.js b/src/product_cover_img.js index 5a76590..8d4188d 100644 --- a/src/product_cover_img.js +++ b/src/product_cover_img.js @@ -15,6 +15,11 @@ if (!inputDir || !previewDir) { //创建输出文件夹 cover.scaleArr.forEach((item) => { item.dir = `${inputDir}/${item.scale.join('x')}`; + // 如果之前存在生成的主图文件夹,先删除 + if (fs.existsSync(item.dir)) { + fs.rmSync(item.dir, { recursive: true, force: true }); + } + // 删除后再重新生成新的空文件夹 if (!fs.existsSync(item.dir)) { fs.mkdirSync(item.dir); } diff --git a/src/reduce_img_size.js b/src/reduce_img_size.js new file mode 100644 index 0000000..8658201 --- /dev/null +++ b/src/reduce_img_size.js @@ -0,0 +1,36 @@ +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) { + let { width } = await sharp(imgPath).metadata(); + const size = fs.statSync(imgPath).size; + const fileSizeInMB = size / (1024 * 1024); // 将字节转换为 MB + console.log(width, fileSizeInMB); + // .resize(800) // 调整图片宽度为 800 像素 + // .jpeg({ quality: 80 }) // 设置 JPEG 格式的质量为 80% + // .toFile('output.jpg', (err, info) => { + // if (err) throw err; + // console.log('图片已成功压缩:', info); + // }); +} + +fs.readdirSync(previewDir).forEach(async (file) => { + const ext = file.split('.').pop().toLowerCase(); + if (cover.imgFormat.has(ext)) { + const imgPath = path.join(previewDir, file); + const tempImgPath = path.join(previewDir, `${file}_temp`); + + reduceImgSize(imgPath, tempImgPath); + } +});