Files
TinyPanda/README.md

213 lines
5.4 KiB
Markdown
Raw Permalink 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.

# TinyPanda 🐼
专业的图片压缩工具,基于 Electron 和 Tinify API 构建。
![TinyPanda Logo](assets/icon.png)
## ✨ 功能特性
-**批量图片压缩** - 支持队列管理,可同时处理多张图片
-**实时进度显示** - 显示压缩进度和状态
-**压缩效果对比** - 显示压缩前后大小对比及节省比例
-**打包下载** - 支持将所有压缩后的图片打包为 ZIP 下载
-**拖拽上传** - 支持拖拽图片到上传区域
-**美观的现代化 UI** - Windows 11 Fluent Design 风格界面
-**自定义标题栏** - 无边框窗口设计,支持窗口控制
## 🖼️ 支持的图片格式
- JPG / JPEG
- PNG
- WebP
## 🚀 快速开始
### 环境要求
- Node.js >= 14.0.0
- npm >= 6.0.0
### 安装依赖
```bash
npm install
```
### 配置 API Key
1. 访问 [Tinify 官网](https://tinify.cn/) 注册账号
2. 获取您的 API Key
3. 在项目根目录创建 `.env` 文件,添加以下内容:
```env
TINIFY_API_KEY=your_api_key_here
```
### 运行应用
```bash
npm run dev
```
### 打包应用
```bash
# 打包为 Windows 应用
npm run build:win
# 打包为所有平台
npm run build
```
打包后的应用将输出到 `dist` 目录。
## 📖 使用说明
### 1. 验证 API Key
- 点击右上角设置按钮
- 输入您的 API Key
- 点击"验证"按钮确认有效性
- 点击"保存"保存配置
### 2. 添加图片
- **方法一**:点击"选择图片"按钮选择文件
- **方法二**:直接拖拽图片到上传区域
### 3. 压缩图片
- 添加图片后,点击"全部压缩"按钮
- 等待所有图片压缩完成
- 查看每张图片的压缩前后大小对比和节省比例
### 4. 下载结果
- **单张下载**:点击每张图片的"下载"按钮
- **批量下载**:点击"打包下载"按钮,选择保存位置
## 🛠️ 技术栈
- **Electron 32.0.0** - 桌面应用框架
- **Tinify API** - 专业图片压缩服务
- **JSZip 3.10.1** - 文件打包
- **Electron Store 8.2.0** - 配置持久化
- **原生 CSS** - Windows 11 Fluent Design 风格
## 📁 项目结构
```
TinyPanda/
├── src/
│ ├── main/
│ │ └── index.js # 主进程代码窗口管理、IPC 通信)
│ └── renderer/
│ ├── index.html # 渲染进程 HTML
│ ├── styles.css # 样式文件
│ ├── app.js # 渲染进程逻辑
│ └── icons.js # 图标组件
├── assets/ # 资源文件(图标等)
├── .env # 环境变量配置
├── package.json # 项目配置
└── README.md # 项目说明
```
## 🔑 API Key 注意事项
- 每个账户每月有 **500 次**免费压缩额度
- API Key 请妥善保管,不要泄露
- 可以在 [Tinify 官网](https://tinify.cn/developers) 查看详细文档
- 压缩失败时请检查 API Key 是否有效、网络连接是否正常
## 🎨 UI 设计
TinyPanda 采用 **Windows 11 Fluent Design** 设计语言,提供:
- 流畅的动画效果
- 半透明毛玻璃效果
- 现代化的图标和按钮
- 响应式的布局设计
- 清晰的状态指示
## 📝 开发指南
### 代码风格
- 使用 ES6+ JavaScript 语法
- 主进程和渲染进程通过 IPC 通信
- 使用 `async/await` 处理异步操作
### IPC 通信协议
主进程提供以下 IPC 处理器:
- `get-api-key` - 获取当前 API Key
- `set-api-key` - 设置 API Key
- `validate-api-key` - 验证 API Key
- `compress-image` - 压缩单张图片
- `get-image-info` - 获取图片信息
- `save-compressed-image` - 保存压缩后的图片
- `create-zip` - 创建 ZIP 压缩包
- `select-save-directory` - 选择保存目录
- `select-files` - 选择文件
- `window-minimize/maximize/close` - 窗口控制
### 添加新功能
1.`src/main/index.js` 中添加 IPC 处理器
2.`src/renderer/app.js` 中调用相应的 IPC 方法
3.`src/renderer/index.html` 中添加 UI 元素
4.`src/renderer/styles.css` 中添加样式
## 🐛 常见问题
**Q: 压缩失败怎么办?**
A: 请检查以下项:
- API Key 是否有效
- 网络连接是否正常
- 文件格式是否支持JPG、PNG、WebP
- 查看控制台错误信息
**Q: 如何获取更多压缩额度?**
A: 访问 [Tinify 官网](https://tinify.cn/) 查看付费计划。
**Q: 可以离线使用吗?**
A: 不可以,压缩功能需要连接到 Tinify API 服务器。
**Q: 压缩后的图片质量如何?**
A: Tinify 使用智能压缩算法,在保持视觉质量的同时最大化压缩率,通常可以减少 50-80% 的文件大小。
## 🤝 贡献
欢迎提交 Issue 和 Pull Request
1. Fork 本仓库
2. 创建特性分支 (`git checkout -b feature/AmazingFeature`)
3. 提交更改 (`git commit -m 'Add some AmazingFeature'`)
4. 推送到分支 (`git push origin feature/AmazingFeature`)
5. 开启 Pull Request
## 📄 许可证
MIT License - 详见 [LICENSE](LICENSE) 文件
## 👥 作者
**Pandora Studio**
- 项目主页: https://git.pandorastudio.cn/product/TinyPanda.git
- 问题反馈: [Issues](https://git.pandorastudio.cn/product/TinyPanda.git/issues)
## 🙏 致谢
- [Electron](https://www.electronjs.org/) - 跨平台桌面应用框架
- [Tinify](https://tinify.cn/) - 专业图片压缩服务
- [JSZip](https://stuk.github.io/jszip/) - JavaScript ZIP 库
---
⭐ 如果这个项目对你有帮助,请给它一个 Star