Files
gzh/optimize-png.js

50 lines
1.5 KiB
JavaScript
Raw Normal View History

2026-01-06 15:03:14 +08:00
const fs = require('fs');
const path = require('path');
const imagemin = require('imagemin');
const imageminPngquant = require('imagemin-pngquant');
// 源目录和目标目录
const srcDir = path.join(__dirname, 'src', 'assets');
const destDir = path.join(__dirname, 'src', 'assets'); // 直接覆盖原文件
// 优化PNG图片的函数
async function optimizePng() {
try {
console.log('开始优化PNG图片...');
// 读取源目录下的所有PNG图片
const files = await imagemin([`${srcDir}/*.png`], {
destination: destDir,
plugins: [
imageminPngquant({
quality: [0.6, 0.8] // 质量范围
})
]
});
console.log('PNG图片优化完成');
console.log('优化的文件:');
// 计算并显示优化前后的文件大小对比
for (const file of files) {
const srcPath = path.join(srcDir, path.basename(file.sourcePath));
const destPath = file.destinationPath;
const srcStats = fs.statSync(srcPath);
const destStats = fs.statSync(destPath);
const srcSize = srcStats.size;
const destSize = destStats.size;
const reduction = ((srcSize - destSize) / srcSize * 100).toFixed(2);
console.log(`${path.basename(file.sourcePath)}: ${(srcSize / 1024).toFixed(2)}KB → ${(destSize / 1024).toFixed(2)}KB (减少${reduction}%)`);
}
} catch (error) {
console.error('优化PNG图片时出错:', error);
}
}
// 执行优化
optimizePng();