你的 Mac 上有一个图片处理器,你大概率没用过。它从 OS X Panther(2003 年)就在了,每一次 macOS 更新都原样附赠,能缩放、转换、压缩、旋转、剥离元数据、批量处理——比大多数 GUI 应用都快。它叫 sips(Scriptable Image Processing System),住在 /usr/bin/sips。
这篇是 sips 的完整指南,附上我自己实际在用的工作流。
为什么 sips 存在却几乎没人用
sips 是苹果给系统级图像处理准备的方案——为 shell 脚本、Automator 动作和其他需要图像操作但不想启动 Preview 或 Photos 的 macOS 基建设计。它用的是和 macOS 其他部分一样的 Core Graphics / Core Image 引擎,所以输出质量和 Preview 的导出完全一致。
之所以被遗忘,原因有三: 1. 文档稀缺(Apple 的 man sips 正确但简短到难用) 2. 没有 GUI 推广它 3. 大多数 Mac 图片压缩相关博客默认推荐 ImageOptim 或 TinyPNG
但对于批量操作、自动化、CI 管道,sips 是 macOS 上最实用的工具。
你真正会用的 9 个命令
1. 缩放到最大边长
```bash
缩放到长边 1200px,保持比例
sips -Z 1200 photo.jpg --out photo-small.jpg ```
-Z(大写 Z)保持比例。-z(小写)强制精确尺寸,会变形。
2. 格式转换
```bash
HEIC 转 JPEG
sips -s format jpeg input.heic --out output.jpg
任何格式转 PNG
sips -s format png input.heic --out output.png
转 WebP(macOS Sonoma 起)
sips -s format webp input.jpg --out output.webp ```
支持的格式:jpeg、png、tiff、gif、pdf、bmp、pict、psd、qtif、sgi、tga、webp(较新 macOS)。
3. 压缩 + 质量控制
```bash
JPEG 质量 80(满分 100)
sips -s formatOptions 80 -s format jpeg input.png --out output.jpg
最大压缩(最小文件)
sips -s formatOptions low input.jpg --out output.jpg
选项:'low'、'normal'、'high'、'best',或 0-100 整数
```
4. 剥离元数据
```bash
移除 JPEG 的 EXIF、GPS、颜色配置
sips -d all input.jpg --out output.jpg
只剥离 ICC 颜色配置
sips -d profile input.jpg --out output.jpg ```
-d 标志删除指定项。-d all 是公开发布前的隐私友好默认。
5. 旋转 / 翻转
```bash
顺时针旋转 90°
sips -r 90 photo.jpg --out rotated.jpg
水平翻转
sips -f horizontal photo.jpg --out flipped.jpg
垂直翻转
sips -f vertical photo.jpg --out flipped.jpg ```
6. 查看图片信息
```bash
查看尺寸、格式、文件大小等
sips -g all photo.jpg
只看尺寸
sips -g pixelWidth -g pixelHeight photo.jpg ```
输出到 stdout,脚本里好解析。
7. 批量处理一个文件夹
```bash
缩放所有 JPEG
for f in ~/Photos/*.jpg; do sips -Z 1200 "$f" --out "${f%.jpg}-small.jpg" done ```
或者输出到子文件夹:
``bash mkdir -p _resized for f in *.jpg; do sips -Z 1200 "$f" --out "_resized/$f" done ``
8. 把整个文件夹的 HEIC 转成 JPEG
``bash mkdir -p _jpeg for f in .heic .HEIC; do [[ -f "$f" ]] || continue sips -s format jpeg "$f" --out "_jpeg/${f%.*}.jpg" done ``
这是我把 iPhone 照片发给非苹果用户时用的脚本。比在 Preview 里逐张打开导出快 50 倍。
9. 裁剪和填充
```bash
居中裁剪到 1080x1080(例如发小红书 / Instagram)
sips -c 1080 1080 photo.jpg --out square.jpg
填充到 1080x1080(白色背景)
sips -p 1080 1080 --padColor FFFFFF photo.jpg --out padded.jpg ```
实战配方
发布前压缩图片到 web 友好质量
```bash #!/usr/bin/env bash
压缩文件夹里所有 JPEG/PNG 到 web 友好的质量 80
输出:./_web/ 子文件夹
set -euo pipefail
INPUT="${1:-.}" mkdir -p "$INPUT/_web"
shopt -s nocasematch for f in "$INPUT"/.{jpg,jpeg,png,heic}; do [[ -f "$f" ]] || continue name="$(basename "$f")" out="${name%.}.jpg" sips -s format jpeg -s formatOptions 80 -d all -Z 2400 "$f" --out "$INPUT/_web/$out" >/dev/null echo " → $out" done ```
存为 ~/bin/compress-for-web,chmod +x,然后:
``bash compress-for-web ~/Desktop/product-shots ``
完事。一个压缩好、剥离元数据、最大 2400px 的 JPEG 文件夹,可以直接上传。
把 iPhone Live Photos 转成普通 JPEG
iPhone Live Photos 实际上是 .heic + .mov 配对。只导出静态图:
``bash for f in *.HEIC; do sips -s format jpeg -s formatOptions 90 "$f" --out "${f%.HEIC}.jpg" done ``
给文档截图批量调整尺寸
```bash
把 screenshots 文件夹里的截图调到最大 1200px(适合博客嵌入)
输出到同文件夹加 -1200 后缀
for f in screenshots/*.png; do base="${f%.png}" sips -Z 1200 "$f" --out "${base}-1200.png" done ```
Automator + sips 给文件夹加水印
Automator 的「运行 Shell 脚本」动作可以把图片管道喂给 sips。对于 Finder 的「快速操作」服务特别有用。右键 → 快速操作 → 「调整到 1080」运行一个简短的 sips 脚本。设置一次,用一辈子。
Hazel 规则:自动压缩新下载
如果你用 Hazel,规则类似这样:
`` 如果文件被添加 且 扩展名是 jpg 或 jpeg 或 png 且 大小 > 500 KB 运行 shell 脚本(嵌入): sips -s formatOptions 80 -Z 2400 "$1" --out "$1" ``
对下载文件夹设置这条,永远不会再不小心把 12 MB 的 JPEG 邮件发出去。
sips 不擅长的地方
三种情况下 sips 不是最佳工具:
1. 极限 JPEG 压缩。MozJPEG(ImageOptim 里用的)在同等画质下能比 sips 小 5-15%。如果绝对体积是首要指标,ImageOptim 胜。
2. AVIF / JPEG XL 输出。sips 能读现代格式但写支持滞后。需要输出 AVIF 用 Squoosh 或 QuickPix(封装了 sips + 现代格式导出)。
3. 实时前后对比预览。sips 只是 CLI。需要可视化对比就用带滑块的 GUI 工具。
为什么我们基于 sips 做了 QuickPix
QuickPix 是我做的一款 Mac App。它用 sips 作为引擎,但在上面加了:
- 拖拽放进去的 UX(不需要 shell)
- 预制预设(最大压缩 / 推荐 / Web 优化 / 无损)
- 前后对比滑块(视觉验证质量)
- 文件夹监听(自动压缩新文件)
- 现代格式导出(HEIC、WebP、AVIF 读取)
- 颜色配置保留
- 批量进度
如果你住在 Terminal 里,sips 就是答案。如果你不住在 Terminal 里,QuickPix 是用同一个引擎的最顺手方式。
QuickPix vs ImageOptim 的诚实对比 →
结语
sips 是 macOS 安静的超能力之一。我认识的大多数开发者都是在需要批量缩放的某一天才学到它,然后又忘了。把这个工具加入工具带,第二次用到就回本。
收藏这篇。或者——如果 shell 不是你的环境——试试 QuickPix,用同样的引擎配上拖拽 UI。免费版处理大多数场景。
常见问题
sips 是 macOS 默认安装的吗?
是。sips 自 OS X Panther(2003)起就在 /usr/bin/sips。不需要安装任何东西,打开 Terminal 输入 sips 看帮助即可。它是系统的一部分,不是第三方工具。
sips 能压缩 HEIC 文件吗?
可以。macOS sips 自 macOS High Sierra 起原生支持 HEIC 编解码。sips -s format heic input.jpg --out output.heic(转 HEIC)和 sips -s formatOptions 80 input.heic --out smaller.heic(原地压缩 HEIC)都能工作。
sips 支持 AVIF 或 JPEG XL 吗?
sips 能读取现代格式(包括 AVIF,macOS Ventura+)但写支持有限。输出 AVIF 或 JPEG XL 请用 Squoosh、ImageMagick,或 QuickPix 这类 GUI。日常 HEIC、WebP、PNG、JPEG——sips 全都搞定。
怎么用 sips 批量缩放一个文件夹?
一个简单 shell 循环:for f in *.jpg; do sips -Z 1200 "$f" --out "_resized/$f"; done。先用 mkdir -p _resized 建好输出目录。这条命令把每张 JPEG 缩放到最大边 1200px,保持比例。加 -s formatOptions 80 同时压缩到质量 80。
sips 比 ImageOptim 或 TinyPNG 快吗?
批量场景下,sips 是最快的,因为它是 CLI 工具没有 UI 开销——100 张图 5-10 秒处理完。ImageOptim 单张速度差不多但 UI 有开销。TinyPNG 是服务端处理,总时间取决于上传/下载带宽(大批量经常比 sips 慢)。