Back to Blog
·2 min read·quickpix-image-compressor

macOS sips 命令完全指南(2026)

每一台 Mac 都自带一个又快又安全的图片处理器,叫 sips。可以缩放、转换、压缩、剥离元数据、批量处理——不用装任何东西。这里是它全部能做的事。

你的 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. 缩放到最大边长

# 缩放到长边 1200px,保持比例
sips -Z 1200 photo.jpg --out photo-small.jpg

-Z(大写 Z)保持比例。-z(小写)强制精确尺寸,会变形。

2. 格式转换

# 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. 压缩 + 质量控制

# 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. 剥离元数据

# 移除 JPEG 的 EXIF、GPS、颜色配置
sips -d all input.jpg --out output.jpg

# 只剥离 ICC 颜色配置
sips -d profile input.jpg --out output.jpg

-d 标志删除指定项。-d all 是公开发布前的隐私友好默认。

5. 旋转 / 翻转

# 顺时针旋转 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. 查看图片信息

# 查看尺寸、格式、文件大小等
sips -g all photo.jpg

# 只看尺寸
sips -g pixelWidth -g pixelHeight photo.jpg

输出到 stdout,脚本里好解析。

7. 批量处理一个文件夹

# 缩放所有 JPEG
for f in ~/Photos/*.jpg; do
  sips -Z 1200 "$f" --out "${f%.jpg}-small.jpg"
done

或者输出到子文件夹:

mkdir -p _resized
for f in *.jpg; do
  sips -Z 1200 "$f" --out "_resized/$f"
done

8. 把整个文件夹的 HEIC 转成 JPEG

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. 裁剪和填充

# 居中裁剪到 1080x1080(例如发小红书 / Instagram)
sips -c 1080 1080 photo.jpg --out square.jpg

# 填充到 1080x1080(白色背景)
sips -p 1080 1080 --padColor FFFFFF photo.jpg --out padded.jpg

实战配方

发布前压缩图片到 web 友好质量

#!/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,然后:

compress-for-web ~/Desktop/product-shots

完事。一个压缩好、剥离元数据、最大 2400px 的 JPEG 文件夹,可以直接上传。

把 iPhone Live Photos 转成普通 JPEG

iPhone Live Photos 实际上是 .heic + .mov 配对。只导出静态图:

for f in *.HEIC; do
  sips -s format jpeg -s formatOptions 90 "$f" --out "${f%.HEIC}.jpg"
done

给文档截图批量调整尺寸

# 把 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 慢)。

#macos#sips#command-line#image-processing#mac#terminal#中文

Written by

Peter Zhang

Building local-first Mac & iOS productivity apps at Obelisk Club.