
你有没有遇到过这样的场景——精心准备了一篇公众号文章,上传封面图时系统提示「文件大小超过 5MB」?或者公司网站的首页 Banner 加载了整整 8 秒,打开 DevTools 一看,一张 12MB 的 hero 图赫然在列?
图片,是网页体积的大头。根据 HTTP Archive 的统计,一个典型网页平均有 60% 以上的流量花在图片上。而大部分图片,压缩后肉眼看不出任何区别,体积却能砍掉 50% 到 80%。
市面上不缺压缩工具,但要么是在线服务需要逐张上传、隐私存疑,要么是付费软件动辄一两百块,要么是命令行工具门槛太高。于是我做了章小压(OctoShrink)——免费、开源、开箱即用、跨平台。
它能做什么
章小压是一个本地图片压缩工具,支持 PNG、JPG、GIF、WebP、BMP 格式,还能输出 AVIF 和 JPEG XL 这两种下一代图片格式。
核心能力一句话概括:拖进去,压缩好,还给你。
具体来说:
批量处理,3 线程并发。 拖入一个文件夹,它会自动递归处理子目录里的所有图片。三线程并发跑,不用一张一张排队。
7 个压缩引擎,智能选择。 集成了 pngquant、oxipng、mozjpeg、gifsicle、cwebp、cjxl、avifenc 这 7 个业界最强的图片压缩 CLI 工具。每个格式会自动选择最优算法,PNG 先试 pngquant(有损),效果不够再试 oxipng(无损),最后还有 Rust image 引擎兜底。
开箱即用,零依赖。 这是和市面上其他工具最大的区别。所有 CLI 工具和 17 个依赖库全部打包进了应用里,下载安装就能用,不需要你装 Homebrew、不需要配环境变量、不需要碰命令行。macOS 版整个应用才 18MB。
实时对比,滑动查看。 压缩完点「对比」按钮,左右滑动可以实时对比压缩前后的画质差异。还能在对比界面里实时拖动质量滑块,重新压缩并即时预览效果,直到找到你满意的平衡点。
暗黑模式,跟随系统。 自动/亮色/暗黑三种模式,点一下切换,也跟着系统走。晚上压缩图片不刺眼。

亮色模式与暗黑模式
原图保护,一键恢复。 如果选了「替换原图」模式,压缩前会自动备份原图。不满意?一个按钮恢复全部原图,或者单独恢复某一张。
原图已是最优则不替换。 如果压缩后发现体积没变小,章小压会直接跳过,不会拿一个更大的文件去替换你的原图。
压缩效果

和其他工具比,好在哪
| 章小压 | 在线压缩 | 付费软件 | 命令行工具 | |
|---|---|---|---|---|
| 本地运行,隐私安全 | 是 | 否 | 是 | 是 |
| 批量处理 | 是 | 有限 | 是 | 需脚本 |
| 内置全部工具 | 是 | - | 部分 | 需手动装 |
| 开源免费 | 是 | - | 否 | 是 |
| 体积 | 18MB | - | 100MB+ | - |
| 跨平台 | macOS/Win/Linux | 任何浏览器 | 通常单平台 | 任何平台 |
在线工具最大的问题是隐私和效率。你的图片要传到别人服务器上,压缩完再传回来。几十张图片就是几百 MB 的上传下载流量,速度慢不说,敏感图片(证件、合同、设计稿)也不敢传。章小压完全在本地运行,断网也能用。
付费软件比如 TinyPNG 的桌面版要 $50/年,ImageOptim 只有 macOS 版。章小压 MIT 开源,三个平台都能用。
技术选型:为什么是 Tauri
章小压用 Tauri 2 构建,后端 Rust,前端原生 HTML/CSS/JS(没有 React,没有 Vue,没有打包步骤)。
选 Tauri 而不是 Electron 的原因很简单:体积。一个 Electron 应用动辄 150MB+,因为里面塞了一整个 Chromium 浏览器和 Node.js 运行时。Tauri 用系统自带的 WebView,macOS 上是 WebKit,Windows 上是 Edge WebView2,Linux 上是 WebKitGTK。章小压加上全部 7 个压缩工具和 17 个依赖库,总共才 18MB。
18MB 和 150MB 的差距,不只是下载时间的问题,更是内存占用和启动速度的问题。章小压启动几乎是瞬间的,内存占用不到 50MB。
Rust 后端带来的另一个好处是压缩速度。image crate 做后备解码/编码是纯 Rust 实现,加上 tokio 的异步并发,3 线程同时压缩时 CPU 利用率拉满,几十张图片几秒搞定。
一些设计细节
工具链打包方案。 macOS 上把 7 个 CLI 二进制和 17 个 dylib 打包进 .app 的 Contents/Resources/ 目录,通过 DYLD_FALLBACK_LIBRARY_PATH 环境变量让工具找到内置库,不修改二进制文件的依赖路径(那样会破坏签名)。这样既保持了工具的原始状态,又实现了真正的开箱即用。
Windows 路径处理。 Windows 路径的反斜杠(C:\Users\...)在 HTML 内联事件里会被当作 JS 转义符。章小压改用 addEventListener + 闭包传递路径对象,彻底绕开了这个跨平台经典坑。
静默执行。 Windows 上调用 CLI 工具默认会弹出控制台黑框。章小压给所有进程创建加了 CREATE_NO_WINDOW 标志,压缩过程完全静默,不会有一堆黑框闪来闪去。
下载使用
章小压已经发布到 GitHub,三个平台都有安装包:
- macOS:
.dmg(Apple Silicon) - Windows:
.exe(NSIS 安装包)/.msi - Linux:
.deb/.AppImage
前往 GitHub Release 页面下载:https://github.com/misswell/octo-shrink/releases
安装后打开,拖入图片或文件夹,选择输出模式(替换原图 / 添加后缀 / 输出到指定目录),点「开始压缩」就行。不需要看文档,不需要配参数,默认值已经是最好的选择。
开源
章小压是 MIT 协议开源的,代码在 GitHub:https://github.com/misswell/octo-shrink
如果你有功能建议或者遇到 bug,欢迎提 Issue。如果你是开发者,也欢迎提 PR——项目结构很干净,Rust 后端 + 纯 JS 前端,没有复杂的构建链,上手成本低。
图片压缩这件事,不该是一个需要折腾的事。章小压想做的,就是让它变得像打开一个应用、拖进去、搞定一样简单。
试试看,给你的图片减减肥。
我想问一下,是imagemagick不能打了嘛?
ImageMagick 是图像处理的全能选手,擅长转换、裁剪、合成这些操作,但压缩不是它的强项。它的”压缩”基本是重新编码,体积优化有限。
章小压用的是 pngquant、mozjpeg、oxipng 这些专门为压缩而生的工具,比如 pngquant 做有损量化压缩,同样一张 PNG 经常能砍 70%+,这是 ImageMagick 做不到的。
另外章小压是个 GUI 应用,拖进去就能批量处理、实时对比、一键恢复原图,面向不想碰命令行的用户,和 ImageMagick 的定位不太一样。