Files
gzh/optimize-png.js
2026-01-06 15:03:14 +08:00

50 lines
1.5 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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();