# image-compressor **Repository Path**: GQ-hh/image-compressor ## Basic Information - **Project Name**: image-compressor - **Description**: 使用TinyPNG API进行本地图片压缩 - **Primary Language**: NodeJS - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-12-19 - **Last Updated**: 2026-05-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 图片压缩工具 (Image Compressor) 基于TinyPNG API的图片压缩工具,支持批量压缩目录中的JPG、JPEG和PNG图片文件。 ## 功能特点 - 支持批量压缩目录及其子目录中的所有图片 - 支持指定单个或多个文件进行压缩 - 自动识别JPG、JPEG和PNG格式图片 - 支持并发处理,提高压缩效率 - 实时显示压缩进度 - 可自定义并发处理数量 ## 初始化 ## 配置 API Key 使用前需要配置 TinyPNG API Key([免费申请](https://tinypng.com/developers)): 1. 在项目根目录创建 `.env` 文件: ```bash cp .env.example .env ``` 2. 编辑 `.env` 文件,填入你的 API Key: ``` TINYPNG_API_KEY=your_api_key_here ``` 3. 重新构建项目使配置生效: ```bash npm run build ``` > **提示**:也可通过系统环境变量 `TINYPNG_API_KEY` 或在用户主目录创建 `.image-compressor.env` 文件(全局生效)来配置。 ### 全局安装 ```bash npm install -g . ``` ## 使用方法 ### 命令行使用 ```bash # 压缩当前目录中的所有图片 i-co # 压缩指定的单个文件 i-co nov_bg.png i-co ./nov_bg.png # 压缩多个指定文件 i-co a.png b.png c.jpg # 压缩多个文件并设置并发数 i-co a.png b.png -c 4 # 设置并发处理数量 i-co --concurrency 4 # 显示帮助信息 i-co --help # 显示版本信息 i-co --version ``` ### 编程方式使用 ```javascript // 压缩整个目录 const compressImagesInDirectory = require('image-compressor'); compressImagesInDirectory('/path/to/images', 4) // 4是并发数 .then(() => { console.log('所有图片压缩成功!'); }) .catch((err) => { console.error('压缩图片时出错:', err); }); // 压缩指定文件 const { compressFiles } = require('image-compressor'); compressFiles(['/path/to/a.png', '/path/to/b.jpg'], 4) .then(() => { console.log('压缩完成'); }) .catch((err) => { console.error('压缩图片时出错:', err); }); ``` ## 本地调试方法 1. 在本项目目录运行指令: ```bash npm link ``` 2. 在需要压缩图片的项目目录运行指令: ```bash npm link image-compressor ``` 3. 在需要压缩图片的项目目录运行压缩指令: ```bash i-co ``` 或指定并发数: ```bash i-co --concurrency 4 ``` 4. 调试结束后,在压缩项目目录运行指令: ```bash npm unlink image-compressor ``` 5. 在本项目目录运行指令: ```bash npm unlink ``` ## 注意事项 - 需要有效的TinyPNG API密钥(已在代码中配置) - 压缩会覆盖原始图片文件,请确保已备份重要图片 - 并发数默认根据CPU核心数自动设置,最多8个 - 压缩过程中会实时显示进度 ## 开发说明 ### 构建项目 ```bash npm run build ``` ### 项目结构 - `src/index.js` - 主要功能实现 - `bin/index.js` - 命令行入口 - `data/cacert.pem` - SSL证书文件 - `webpack.config.js` - Webpack配置