MCPcopy Create free account
hub / github.com/Silentely/eSIM-Tools / optimizeImages

Function optimizeImages

scripts/optimize-images.js:261–314  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

259
260// 主函数
261async function optimizeImages() {
262 BuildLogger.log('🚀 开始图片优化...');
263 BuildLogger.log(`📁 输入目录: ${config.inputDir}`);
264 BuildLogger.log(`📁 输出目录: ${config.outputDir}`);
265 BuildLogger.log(`⚡ 并发数: ${config.maxConcurrent}`);
266
267 // 确保输出目录存在
268 ensureOutputDir();
269
270 // 检查输入目录是否存在
271 if (!fs.existsSync(config.inputDir)) {
272 BuildLogger.warn(' 输入目录不存在,创建示例目录: ${config.inputDir}');
273 fs.mkdirSync(config.inputDir, { recursive: true });
274
275 // 创建示例文件
276 const examplePath = path.join(config.inputDir, 'example.txt');
277 fs.writeFileSync(examplePath, '请将需要优化的图片文件放在此目录中');
278 BuildLogger.log(`📝 已创建示例文件: ${examplePath}`);
279 return;
280 }
281
282 const files = fs.readdirSync(config.inputDir);
283 const imageFiles = files.filter(isImageFile);
284
285 if (imageFiles.length === 0) {
286 BuildLogger.warn(' 未找到图片文件');
287 return;
288 }
289
290 BuildLogger.log(`📸 找到 ${imageFiles.length} 个图片文件`);
291
292 const startTime = Date.now();
293 const results = await processImagesInBatches(imageFiles);
294 const duration = ((Date.now() - startTime) / 1000).toFixed(2);
295
296 // 生成清单
297 generateManifest();
298
299 BuildLogger.log(`\n🎉 优化完成!`);
300 BuildLogger.log(`⏱️ 用时: ${duration}秒`);
301 BuildLogger.success(' 成功: ${results.successful}');
302 BuildLogger.log(`⏭️ 跳过: ${results.skipped}`);
303 BuildLogger.error(' 失败: ${results.failed}');
304 if (results.totalSavings > 0) {
305 const avgSavings = (results.totalSavings / results.successful).toFixed(1);
306 BuildLogger.log(`💾 平均节省空间: ${avgSavings}%`);
307 }
308 BuildLogger.log(`📁 输出目录: ${config.outputDir}`);
309
310 if (results.failed > 0) {
311 BuildLogger.warn(' 有 ${results.failed} 个文件处理失败');
312 process.exit(1);
313 }
314}
315
316// 命令行参数处理
317const args = process.argv.slice(2);

Callers 1

optimize-images.jsFile · 0.85

Calls 7

ensureOutputDirFunction · 0.85
processImagesInBatchesFunction · 0.85
generateManifestFunction · 0.85
logMethod · 0.45
warnMethod · 0.45
successMethod · 0.45
errorMethod · 0.45

Tested by

no test coverage detected