一款基于 WXT + Vue 3 开发的浏览器扩展,提供高效的图片压缩功能。
-
双模式压缩
- Canvas 本地压缩:无需联网,本地处理,保护隐私
- TinyPNG API 压缩:使用 TinyPNG 专业压缩服务,压缩率更高
-
便捷操作
- 拖拽上传图片
- 右键菜单快速压缩网页图片
- 批量压缩处理
- 批量下载为 ZIP 文件
-
压缩选项
- 调整压缩质量(0-100%)
- 输出格式转换(JPEG / PNG / WebP / 保持原格式)
- 图片尺寸调整(支持等比例缩放)
-
实时预览
- 压缩前后对比预览
- 文件大小变化统计
- 压缩比率显示
- JPEG
- PNG
- WebP
# 安装依赖
pnpm install
# 开发模式(Chrome)
pnpm dev
# 开发模式(Firefox)
pnpm dev:firefox# 构建 Chrome 版本
pnpm build
# 构建 Firefox 版本
pnpm build:firefox
# 打包为 ZIP
pnpm zip- 点击浏览器工具栏中的扩展图标
- 将图片拖拽到上传区域
- 选择压缩模式和参数
- 点击「压缩全部」按钮
- 单独下载或打包下载压缩后的图片
- 在网页中右键点击任意图片
- 选择「压缩图片」菜单项
- 扩展弹窗将自动打开并加载图片
- 压缩后下载
- 访问 TinyPNG 开发者页面 获取免费 API Key
- 在扩展设置页面填入 API Key 并保存
- 切换到 TinyPNG 压缩模式即可使用
TinyPNG 免费版每月提供 500 次压缩额度
- WXT - 现代化的浏览器扩展开发框架
- Vue 3 - 渐进式 JavaScript 框架
- TypeScript - 类型安全
- JSZip - ZIP 文件生成
├── components/ # Vue 组件
│ ├── CompressionControls.vue # 压缩控制面板
│ ├── DropZone.vue # 拖拽上传区域
│ ├── ImageCard.vue # 图片卡片
│ ├── ImageList.vue # 图片列表
│ ├── ModeToggle.vue # 模式切换
│ ├── PreviewPanel.vue # 预览面板
│ ├── ProgressBar.vue # 进度条
│ └── SizeStats.vue # 大小统计
├── composables/ # 组合式函数
│ ├── useCanvasCompressor.ts # Canvas 压缩逻辑
│ ├── useCompression.ts # 压缩管理
│ ├── useDragDrop.ts # 拖拽功能
│ ├── useFileDownload.ts # 文件下载
│ ├── useSettings.ts # 设置管理
│ └── useTinyPng.ts # TinyPNG API
├── entrypoints/ # 扩展入口
│ ├── background.ts # Service Worker
│ ├── content.ts # 内容脚本
│ ├── options/ # 选项页
│ └── popup/ # 弹窗页
├── types/ # TypeScript 类型定义
└── utils/ # 工具函数
contextMenus- 创建右键菜单activeTab- 访问当前标签页storage- 存储设置host_permissions: api.tinify.com- TinyPNG API 请求
pnpm compileMIT