手绘示意图:Mac 笔记本中显示带透明棋盘格的 APNG 贴纸轨道,旁边是动态 WebP 照片轨道与 1989 年体积更胖的动图 GIF 轨道
APNG 动态WebP 图片压缩 macOS Zipic

Mac 上压缩 APNG 与动态 WebP:现代动图格式优化指南

2026-05-07 Zipic Team

2026 年 Mac 上如何压缩 APNG 与动态 WebP——拆解两种格式的内部结构、何时优于 GIF,以及 Zipic 如何用自研 pngoptim 引擎完成优化。

如果你试过在 Mac 上压缩 APNG,多半已经发现两件事。一是大多数图片压缩工具会直接放过 APNG 文件不做处理;二是少数愿意动手的工具,往往会把动画压成一张静态图。动态 WebP 的处境也差不多——浏览器全都支持,但桌面端工具集体当它不存在。

这篇文章想认真对待这两种格式。我们会拆解 APNG 与动态 WebP 的字节结构,看清它们各自在哪些场景能赢过 GIF,再讲怎么在 Zipic 里把这两种格式无损压缩——包括 Zipic 1.9+ 起驱动 APNG 压缩的自研 pngoptim Rust 引擎。

为什么 2026 年 APNG 与动态 WebP 能赢过 GIF

GIF89a 规范出自 1989 年。每帧最多 256 色索引调色板,只有 1-bit 透明度,所有帧逐一以 LZW 压缩位图存储,没有帧间压缩。这就是为什么一段 4 秒的录屏经常变成 6 MB 的 GIF,而同一段内容做成动态 WebP 或 MP4 通常不到 1 MB。这道天花板我们在 GIF 压缩指南 里讲透了。

APNG 与动态 WebP 这两种选择各自解决了一部分问题:

  • APNG(动态 PNG) 继承了 PNG 的 24-bit 全彩与 8-bit alpha 通道,适合锐利的 UI 循环、动态贴纸、矢量内容的录屏——凡是边缘干净度与透明度比体积更重要的场景。
  • 动态 WebP 用 RIFF 容器封装 VP8(有损)或 VP8L(无损)帧,并带有标准的帧 disposal(处置)提示。在 Google 自己的测试集上,有损模式比 GIF 小约 64%,无损模式比 GIF 小约 19%WebP FAQ)。它更适合照片化的循环、视频生成的短片,以及面向开放 Web 的高帧数动画。

两种格式在 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 内部:一个能播帧的 PNG 容器

APNG 由 Mozilla 工程师在 2004 年提出,2008 年随 Firefox 3 原生上线,2025 年 6 月 24 日正式纳入 PNG Third Edition 成为 W3C Recommendation。这段历史能解释 APNG 的核心设计约束:对不认识动画的解码器,APNG 必须依然是一张合法的 PNG

机制上,APNG 在普通 PNG 之外只追加三种辅助 chunk:

  • acTL(animation control)——总帧数与循环次数,必须放在第一个 IDAT 之前
  • fcTL(frame control)——每帧元数据:宽高、x/y 偏移、延迟分子分母、dispose 模式、blend 模式
  • fdAT(frame data)——首帧之后各帧的压缩像素数据

第一帧仍然是普通 PNG 的 IDAT 数据——不认识 APNG 的查看器只会渲染第一帧,把陌生 chunk 当作可忽略的扩展跳过。这种 优雅降级 是 APNG 的杀手特性:一个文件发出去,连冷门 CMS、聊天机器人都能展示出”有意义的画面”。

由于每帧依然是 deflate 压缩位图、走 PNG 滤波管线,APNG 也因此继承了两个特性:

  1. 天然无损。 反复编解码不会引入劣化,不会出现 JPEG 那种振铃伪影。
  2. UI 内容上边缘清晰。 PNG 当年就是为合成图形——线稿、图标、录屏、贴纸——设计的,APNG 把这份长处带到每一帧。

APNG 不擅长的是照片化运动:由长视频生成的连续色调循环用不上 PNG 滤波预测的优势,文件体积会比 VP8/VP9 类编解码器大很多。

动态 WebP 内部:VP8/VP8L 加上帧 disposal

动态 WebP 出自 Google WebP Container Specification——一个 RIFF 容器,内部每帧用 VP8(有损)或 VP8L(无损)。规范增加了:

  • VP8X chunk——表头声明”这是带动画的 WebP”
  • ANIM chunk——全局背景色与循环次数
  • ANMF chunks——一帧一个,携带偏移、时长、dispose、blend 方式以及一段完整的 VP8 / VP8L 数据

由此带来三个 GIF 做不到的特性:

  1. 真正的编解码器压缩。 VP8 有块预测与 DCT 变换,质量参数 0–100。照片化帧的压缩效果远胜逐帧调色板量化。
  2. 8-bit alpha,有损与无损模式下都支持。透明背景上不再有色阶毛边。
  3. 同一文件内可混用有损与无损帧。 关键参考帧保持无损,其余帧走有损省体积。

代价来自格式自身的年代局限:动态 WebP 仅支持 8-bit 色深(不含 HDR),规范规定画布上限约 16384×16384,部分解码器对单帧还有更小的限制。

在 Mac 上用 Zipic 压缩 APNG

Zipic 直接用自研的 pngoptim 引擎 处理 APNG——这是我们用 Rust 写的单文件 CLI,对标 pngquant。根据 pngoptim README,它的速度比 pngquant 平均快 1.69 倍,相同质量下文件再小 2–3%。APNG 支持是内置的:动态 PNG 自动识别,不需要额外参数;引擎以全局共享调色板做量化,同时保留每一帧的时序。

APNG 压缩属于 Zipic Pro 功能。无论是 .apng 后缀的文件,还是表面是 .png 但实际含动画的文件,都走同一条 Pro 路径。

Zipic 的工作流是预设优先:先配置压缩选项,再添加图片。没有单独的”开始”按钮——添加图片即触发任务。

Zipic 压缩设置面板,用于选择或编辑 APNG 压缩预设

点开主窗口左下角的 压缩设置,编辑默认预设,或为动图新建一个:

  • 压缩等级:贴纸包等讲究每像素品质的场景用 2–3;UI 循环较长、对调色板宽容度高时用 4–5
  • 保存格式:保持原格式——Zipic 对 APNG 是 就地压缩 会把 APNG 与其他动图格式互转。Zipic 的格式转换功能仅适用于静态图片。
  • 尺寸调整:文档循环的长边 480–800 px 已足够;iMessage 贴纸需保持在 206×206 pt 内,详情见 FAQ
  • 保存位置:输出到与源目录同级的文件夹(如 ~/Stickers/optimized/),方便上线前用 Quick Look 逐帧 A/B 比对
Zipic 编辑预设界面,配置 APNG 压缩等级与尺寸选项

把 APNG 所在的文件夹拖进主窗口,Zipic 检测到动画后就走 pngoptim 路径,保留帧数与时序,把优化结果写入你指定的位置。点击任意缩略图打开对比预览,确认动画完整。

Safe 模式 vs Aggressive 模式

pngoptim 引擎为 APNG 提供两种结构优化模式,在 Zipic 中通过 APNG-Safe-Mode 偏好开关切换:

  • Safe(默认)——折叠像素数据完全相同的重复帧。反复编解码无损,所有 APNG 解码器都兼容。
  • Aggressive——在帧折叠之上再做帧矩形最小化,把每个 fdAT 块缩到最小脏矩形。对老解码器兼容性略弱,但有兜底机制:一旦最小化会破坏时序,引擎会自动回到 safe 模式。

贴纸包与对外分发用 safe 模式;解码端在你掌控之内(自家应用、自家文档站),且循环里有大量静态段落值得再省一点体积,再切到 aggressive。

在 Mac 上用 Zipic 压缩动态 WebP

动态 WebP 的压缩在 Zipic 里 不需要 Pro——WebP 编码器会自动识别动画并走对应路径。同一个预设同时适用于静态与动态 WebP,不需要额外配置。

Zipic 保存格式菜单,WebP 同时适用于静态与动态输入

动态 WebP 的实用预设值:

  • 压缩等级:UI 循环用 3(边缘锐利、对透明度要求高时优先无损);视频生成的连续色调循环用 4–5
  • 保存格式:保持原格式,WebP 进 WebP 出,就地完成
  • 尺寸调整:动态 WebP 的体积随尺寸变化的规律和 GIF 一样,页内循环用长边 800–1280 px,聊天表情更小

转换范围说明:和 APNG 一样,Zipic 对动态 WebP 是就地压缩,不做动图格式互转——没有动态 WebP → GIF、没有 GIF → 动态 WebP、没有 APNG → 动态 WebP。需要这种转换时去用对应的命令行工具。

静态 WebP 的工作流见 WebP 图片优化指南

在 Zipic 之外创建 APNG 与动态 WebP

Zipic 是压缩器而不是制作工具。如果你的源是 PNG 序列、视频或 GIF,先用下面的工具组装出动图文件,再丢回 Zipic 做最后一道压缩。

用 PNG 序列合成 APNG

apngasm 是 APNG 合成的事实标准工具:

brew install apngasm                     # 一次性安装
apngasm out.apng frame*.png 1 30          # 帧延迟 1/30s

如果偏爱 GUI,APNGb 把 apngasm 的合成与拆解能力封装成 macOS 原生应用。

用 GIF 或 PNG 序列合成动态 WebP

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 里完成最终压缩。

APNG vs 动态 WebP vs GIF:什么场景该选谁

任务最佳格式理由
iMessage / iOS 动态贴纸APNGApple 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 自定义动态 emojiGIF最稳的最低共同标准。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 群表情GIFQQ 客户端各版本对 APNG 支持不一致,GIF 是最稳的最低共同标准。
钉钉 / 飞书 / 企业微信自定义表情GIF(动)/ PNG(静)三家 IM 都接受 GIF + PNG,APNG 支持视客户端版本而定。
微博 / 小红书评论区动图GIF这两家 Web 端虽然解析 APNG,但移动客户端表现不稳定,GIF 是最保险的发布格式

决策从来不是”抽象意义上的最佳格式”,而是”对这个目的地最佳的格式”。先选目的地,再让格式跟上来。

国内 IM 与表情场景的实践建议

国内创作者在做表情包时面对的现实是:微信生态客户端版本碎片 导致 APNG 支持不一致——iOS 微信、安卓微信、Mac 微信对同一个 APNG 文件的渲染可能不同步(首帧静态、循环不顺、闪烁)。比较稳的实践分两档:

  • 目标是微信表情开放平台正式上架 — 用 APNG(开放平台明确接受),按照 微信表情开放平台 规则导出(单张 ≤ 1 MB、240×240 像素、循环建议 ≤ 5 秒)。Zipic 的 APNG 压缩可以把 PS 导出的几 MB APNG 直接砍到 200-400 KB 而不丢帧。
  • 目标是聊天群里直接发动图 — 用 GIF。哪怕你已经有了一份 APNG 母版,也建议导出一份 GIF 副本备用——发到群里碰到旧版本客户端不解码 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。

快速决策流程

新动图素材到手,按这个顺序问:

  1. 会发到 iMessage / iOS 贴纸吗? → APNG,≤500 KB,206×206 pt 上限。
  2. 内容是 UI / 线稿 / 锐利透明? → APNG(受众限定开放 Web 时也可选动态 WebP 无损)。
  3. 内容是照片化 / 视频派生? → 动态 WebP 有损。
  4. 目的地只能吃 GIF?(邮件、老聊天工具、老 CMS)→ GIF。
  5. 目的地是你自己控制的 HTML5 页面? → 跳过动图直接用 <video>

格式选定后,压缩本身才是简单一步:APNG 与动态 WebP 都走 Zipic,GIF 走 Zipic 的 GIF 压缩流程,MP4/WebM 交给 ffmpeg

FAQ

压缩 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? 里讲过。

参考来源

相关文章

试试 Zipic

别再因为工具链装作看不见,让 APNG 与动态 WebP 文件越堆越大。下载 Zipic,把 APNG 预设设为 safe 模式等级 3,让自研 pngoptim 引擎接管这一批。APNG 压缩是 Pro 功能,下载即享 7 天完整 Pro 体验。详见 价格

相关阅读