const fs = require('fs');
const path = require('path');
const sharp = require('sharp');
// 图片扩展名数组
const imageExtensions = ['.png'];
// 目录遍历函数
function walkDir(dirPath) {
fs.readdir(dirPath, (err, files) => {
if (err) {
console.error(`Error reading directory: ${dirPath}`);
return;
}
files.forEach(file => {
const filePath = path.join(dirPath, file);
fs.stat(filePath, (error, stats) => {
if (error) {
console.error(`Error getting file info: ${filePath}`);
return;
}
// 如果是目录,则递归调用 walkDir
if (stats.isDirectory()) {
walkDir(filePath);
} else { // 否则是文件
const extname = path.extname(file).toLowerCase();
if (imageExtensions.includes(extname)) {
const fileName = path.basename(filePath);
const sourcePath = dirPath.replace(/\\/g, '/');
const outputPath = dirPath.replace('source', 'dist');
if (!fs.existsSync(outputPath)) {
fs.mkdirSync(outputPath);
}
processImage(`${sourcePath}/${fileName}`, `${outputPath}/${fileName}`);
}
}
});
});
});
}
// 处理图片的函数
function processImage(sourcePath, outputPath) {
sharp(sourcePath)
.png({ quality: 75 })
.toFile(outputPath) // 输出到新的文件
.then(() => {
console.log(`${sourcePath}-图片压缩成功`);
})
.catch(error => {
console.error(`${sourcePath}-图片压缩失败`, error);
});
}
// 调用函数开始遍历目录
const targetDirectory = 'source'; // 替换为实际目录路径
walkDir(targetDirectory);
nodejs 图片压缩
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
推荐阅读更多精彩内容
- 很多做图片设计的伙伴每天都在处理着相当多的图片,天天和图片打交道,难免会遇到图片刚制作好文件太大的问题,虽然PS等...
- image-compressor 一个简单的JavaScript图像压缩器。使用浏览器的原生canvas.toBl...
- 引言:太多的图片会增加服务器的压力,而目前用户的手机像素越来越高,图片的体积也越来越大,动则5-10多M,而当项目...
- 免费图片处理工具[https://getimg.co/] 图片压缩,图片大小调整,图片裁剪,图片格式转换. 图片压...