2026 年 Mac 上如何压缩 APNG 与动态 WebP——拆解两种格式的内部结构、何时优于 GIF,以及 Zipic 如何用自研 pngoptim 引擎完成优化。
如果你试过在 Mac 上压缩 APNG,多半已经发现两件事。一是大多数图片压缩工具会直接放过 APNG 文件不做处理;二是少数愿意动手的工具,往往会把动画压成一张静态图。动态 WebP 的处境也差不多——浏览器全都支持,但桌面端工具集体当它不存在。
这篇文章想认真对待这两种格式。我们会拆解 APNG 与动态 WebP 的字节结构,看清它们各自在哪些场景能赢过 GIF,再讲怎么在 Zipic 里把这两种格式无损压缩——包括 Zipic 1.9+ 起驱动 APNG 压缩的自研 pngoptim Rust 引擎。
GIF89a 规范出自 1989 年。每帧最多 256 色索引调色板,只有 1-bit 透明度,所有帧逐一以 LZW 压缩位图存储,没有帧间压缩。这就是为什么一段 4 秒的录屏经常变成 6 MB 的 GIF,而同一段内容做成动态 WebP 或 MP4 通常不到 1 MB。这道天花板我们在 GIF 压缩指南 里讲透了。
APNG 与动态 WebP 这两种选择各自解决了一部分问题:
两种格式在 2026 年都已主流。APNG 的全球浏览器覆盖率为 95.46%,覆盖 Chrome 59+、Safari 8+、Firefox 3+、Edge 79+(caniuse — APNG)。WebP 整体覆盖率为 95.57%——所有现代 Chromium、所有现代 Firefox,以及 2020 年 9 月 macOS Big Sur 起的 Safari 14 及更高版本都支持,包括动态 WebP(caniuse — WebP)。
APNG 由 Mozilla 工程师在 2004 年提出,2008 年随 Firefox 3 原生上线,2025 年 6 月 24 日正式纳入 PNG Third Edition 成为 W3C Recommendation。这段历史能解释 APNG 的核心设计约束:对不认识动画的解码器,APNG 必须依然是一张合法的 PNG。
机制上,APNG 在普通 PNG 之外只追加三种辅助 chunk:
IDAT 之前第一帧仍然是普通 PNG 的 IDAT 数据——不认识 APNG 的查看器只会渲染第一帧,把陌生 chunk 当作可忽略的扩展跳过。这种 优雅降级 是 APNG 的杀手特性:一个文件发出去,连冷门 CMS、聊天机器人都能展示出”有意义的画面”。
由于每帧依然是 deflate 压缩位图、走 PNG 滤波管线,APNG 也因此继承了两个特性:
APNG 不擅长的是照片化运动:由长视频生成的连续色调循环用不上 PNG 滤波预测的优势,文件体积会比 VP8/VP9 类编解码器大很多。
动态 WebP 出自 Google WebP Container Specification——一个 RIFF 容器,内部每帧用 VP8(有损)或 VP8L(无损)。规范增加了:
由此带来三个 GIF 做不到的特性:
代价来自格式自身的年代局限:动态 WebP 仅支持 8-bit 色深(不含 HDR),规范规定画布上限约 16384×16384,部分解码器对单帧还有更小的限制。
Zipic 直接用自研的 pngoptim 引擎 处理 APNG——这是我们用 Rust 写的单文件 CLI,对标 pngquant。根据 pngoptim README,它的速度比 pngquant 平均快 1.69 倍,相同质量下文件再小 2–3%。APNG 支持是内置的:动态 PNG 自动识别,不需要额外参数;引擎以全局共享调色板做量化,同时保留每一帧的时序。
APNG 压缩属于 Zipic Pro 功能。无论是 .apng 后缀的文件,还是表面是 .png 但实际含动画的文件,都走同一条 Pro 路径。
Zipic 的工作流是预设优先:先配置压缩选项,再添加图片。没有单独的”开始”按钮——添加图片即触发任务。
点开主窗口左下角的 压缩设置,编辑默认预设,或为动图新建一个:
~/Stickers/optimized/),方便上线前用 Quick Look 逐帧 A/B 比对
把 APNG 所在的文件夹拖进主窗口,Zipic 检测到动画后就走 pngoptim 路径,保留帧数与时序,把优化结果写入你指定的位置。点击任意缩略图打开对比预览,确认动画完整。
pngoptim 引擎为 APNG 提供两种结构优化模式,在 Zipic 中通过 APNG-Safe-Mode 偏好开关切换:
fdAT 块缩到最小脏矩形。对老解码器兼容性略弱,但有兜底机制:一旦最小化会破坏时序,引擎会自动回到 safe 模式。贴纸包与对外分发用 safe 模式;解码端在你掌控之内(自家应用、自家文档站),且循环里有大量静态段落值得再省一点体积,再切到 aggressive。
动态 WebP 的压缩在 Zipic 里 不需要 Pro——WebP 编码器会自动识别动画并走对应路径。同一个预设同时适用于静态与动态 WebP,不需要额外配置。
动态 WebP 的实用预设值:
转换范围说明:和 APNG 一样,Zipic 对动态 WebP 是就地压缩,不做动图格式互转——没有动态 WebP → GIF、没有 GIF → 动态 WebP、没有 APNG → 动态 WebP。需要这种转换时去用对应的命令行工具。
静态 WebP 的工作流见 WebP 图片优化指南。
Zipic 是压缩器而不是制作工具。如果你的源是 PNG 序列、视频或 GIF,先用下面的工具组装出动图文件,再丢回 Zipic 做最后一道压缩。
apngasm 是 APNG 合成的事实标准工具:
brew install apngasm # 一次性安装
apngasm out.apng frame*.png 1 30 # 帧延迟 1/30s
如果偏爱 GUI,APNGb 把 apngasm 的合成与拆解能力封装成 macOS 原生应用。
Google 的 gif2webp 是 libwebp 的一部分:
brew install webp # 一次性安装
gif2webp -q 75 input.gif -o output.webp # 按质量目标做有损
gif2webp -lossless input.gif -o output.webp # 无损(比 GIF 略小)
PNG 序列对应的工具是 img2webp:
img2webp -loop 0 -q 80 frame_*.png -o output.webp
文件生成完,丢进 Zipic 再压一道。
短产品片段可以用 ffmpeg 一次性输出两种格式:
# MP4 / H.264 → APNG(无质量参数,无损)
ffmpeg -i clip.mp4 -plays 0 out.apng
# MP4 → 动态 WebP(质量 75,无限循环)
ffmpeg -i clip.mp4 -vcodec libwebp -loop 0 -q:v 75 out.webp
之后在 Zipic 里完成最终压缩。
| 任务 | 最佳格式 | 理由 |
|---|---|---|
| iMessage / iOS 动态贴纸 | APNG | Apple Human Interface Guidelines 接受 PNG / APNG / GIF / JPEG(不接受动态 WebP),500 KB 上限、100×100–206×206 pt、≤30 FPS。 |
| 文档站锐利 UI 循环 | APNG 或动态 WebP 无损 | PNG 滤波让边缘清晰。想要解码器覆盖最广就选 APNG,受众可控时选动态 WebP 无损。 |
| 开放 Web 的照片循环 | 动态 WebP(有损) | 连续色调下 VP8 完胜任何调色板格式,比 GIF 平均小 ~64%。 |
| WhatsApp 动态贴纸 | 动态 WebP(强制) | WhatsApp 只接受 WebP:512×512 px、动态贴纸上限 500 KB、必须透明背景、动画时长 ≤10 秒(WhatsApp Stickers spec)。 |
| Slack / Discord 自定义动态 emoji | GIF | 最稳的最低共同标准。Slack 自定义 emoji 上限 128 KB、APNG 桌面支持但移动端不一致;Discord 内部用 WebP 但上传永远稳的是 GIF。 |
| 邮件 newsletter 头图 | GIF | 多数邮件客户端仍会剥掉 <picture>/<source>,不解码 WebP/APNG。 |
| 落地页营销视频 | MP4 + WebM 配 <video> | 动态 WebP 也比不过真实视频编码。Lighthouse 明确推荐这条路。 |
| 微信表情开放平台 | GIF / APNG | 微信表情开放平台接受 PNG / GIF / APNG(不接受动态 WebP),动态表情建议 GIF 或 APNG,单张 ≤ 1 MB,常见尺寸 240×240。 |
| QQ 自定义表情 / QQ 群表情 | GIF | QQ 客户端各版本对 APNG 支持不一致,GIF 是最稳的最低共同标准。 |
| 钉钉 / 飞书 / 企业微信自定义表情 | GIF(动)/ PNG(静) | 三家 IM 都接受 GIF + PNG,APNG 支持视客户端版本而定。 |
| 微博 / 小红书评论区动图 | GIF | 这两家 Web 端虽然解析 APNG,但移动客户端表现不稳定,GIF 是最保险的发布格式。 |
决策从来不是”抽象意义上的最佳格式”,而是”对这个目的地最佳的格式”。先选目的地,再让格式跟上来。
国内创作者在做表情包时面对的现实是:微信生态客户端版本碎片 导致 APNG 支持不一致——iOS 微信、安卓微信、Mac 微信对同一个 APNG 文件的渲染可能不同步(首帧静态、循环不顺、闪烁)。比较稳的实践分两档:
apngasm -D animation.apng 拆出 PNG 序列后用 ffmpeg -framerate 24 -i frame_%03d.png -vf "fps=24,scale=240:-1:flags=lanczos" out.gif 转出 GIF。WhatsApp 的”动态贴纸只能用动态 WebP”在国际市场上是硬约束——但这条对国内市场不适用。如果你只面向国内分发,优先 APNG(微信表情正式上架)+ GIF(聊天直接发)的双轨,而不是动态 WebP。
新动图素材到手,按这个顺序问:
<video>。格式选定后,压缩本身才是简单一步:APNG 与动态 WebP 都走 Zipic,GIF 走 Zipic 的 GIF 压缩流程,MP4/WebM 交给 ffmpeg。
压缩 APNG 时 Zipic 会保留动画吗? 会。pngoptim 引擎会以动画感知的方式处理 APNG,保留每一帧、原始延迟和循环次数。压缩后在主窗口的对比预览里复核一下即可。
为什么 GIF 压缩免费而 APNG 压缩要 Pro? APNG 压缩依赖 Zipic 自研的 pngoptim 引擎,这是 Pro 版本背后的工程投入之一,与 zipic-jpeg、gifoptim、svgo-swift、pdfoptim 同属一个家族。免费版覆盖通用图片压缩,Pro 版本则支撑这些格式专属引擎的研发。
能在 Zipic 内把 GIF 转成 APNG 或动态 WebP 吗?
不能。Zipic 对动图是就地压缩——格式转换设置只对静态图生效。GIF → 动态 WebP 用 gif2webp;GIF → APNG 用 gifsicle 拆帧再用 apngasm 合成。
APNG 经过 Zipic 大概能小多少? 对此前未压缩的 APNG,全局调色板量化通常省 20–60%,取决于色彩复杂度。Aggressive 模式在含大量静态段落的长循环上再省 5–15%。已经被作者精调过的贴纸 APNG 可能只省个位数。
动态 WebP 比 APNG 小吗? 照片化内容下是的——通常小 30–60%,因为连续色调下 VP8 完胜 PNG 滤波管线。锐利 UI / 线稿内容下,APNG 与动态 WebP 无损往往只差几个百分点;按目的地兼容性挑就行。
动态 WebP 的透明度和 APNG 一样吗? 一样。动态 WebP 在有损(VP8)与无损(VP8L)模式下都带 8-bit alpha 通道。视觉上 alpha 质量与 APNG 相当,差别在底层 RGB 的编码效率。
动态 AVIF 不是更好吗? 动态 AVIF 确实存在,对照片化运动的压缩更激进,但编码端工具链仍粗糙,Firefox 的 image-sequence 播放还有未关闭的 issue。2026 年面向通用受众,动态 WebP 仍是更稳的”次世代动图”选项。静态 AVIF 我们在 什么是 AVIF? 里讲过。
别再因为工具链装作看不见,让 APNG 与动态 WebP 文件越堆越大。下载 Zipic,把 APNG 预设设为 safe 模式等级 3,让自研 pngoptim 引擎接管这一批。APNG 压缩是 Pro 功能,下载即享 7 天完整 Pro 体验。详见 价格。

Zipic 用 Google 的 libwebp 处理 WebP,但在发现 libavif 无法正确保留 iPhone HDR 照片信息后,自研了 avifoptim。两个截然不同的工程决策背后的逻辑。

gifski 是 Mac 上把视频转成 GIF 的好手,但它压不了已有的 GIF、不会批量处理、也不监控目录。本文讲的是 gifski 之外,Mac 上 GIF 工作流该靠谁。

Zipic 免费版和 Pro 到底差在哪?逐项对比每天 25 次压缩上限、AVIF/PDF/SVG 高级格式、文件夹监控、预设管理和三档价格,帮你判断免费版够不够用、什么时候该升级 Pro。