章小压 · OctoShrink

你有没有遇到过这样的场景——精心准备了一篇公众号文章,上传封面图时系统提示「文件大小超过 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 打包进 .appContents/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 前端,没有复杂的构建链,上手成本低。


图片压缩这件事,不该是一个需要折腾的事。章小压想做的,就是让它变得像打开一个应用、拖进去、搞定一样简单。

试试看,给你的图片减减肥。

2 Comments

    • ImageMagick 是图像处理的全能选手,擅长转换、裁剪、合成这些操作,但压缩不是它的强项。它的”压缩”基本是重新编码,体积优化有限。

      章小压用的是 pngquant、mozjpeg、oxipng 这些专门为压缩而生的工具,比如 pngquant 做有损量化压缩,同样一张 PNG 经常能砍 70%+,这是 ImageMagick 做不到的。

      另外章小压是个 GUI 应用,拖进去就能批量处理、实时对比、一键恢复原图,面向不想碰命令行的用户,和 ImageMagick 的定位不太一样。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注