定义
APNG 是对 PNG 规范的一类扩展,用于在 PNG 文件内部存储逐帧动画序列,其效果与动态 GIF 接近,但同时支持 GIF 不具备的 24 位图像和 8 位透明度[1]。APNG 文件本身仍是合法的 PNG 文件,其第一帧以普通 PNG 数据流的形式保存,因此多数只识别 PNG 的解码器可以直接显示这一帧[2]。
在文件标识方面,APNG 使用 .png 与 .apng 两种扩展名,互联网媒体类型登记为 image/apng,与之并列的静态版本仍使用 image/png[1][3]。
原理
PNG 规范允许在数据流中插入解码器可忽略的辅助数据块,APNG 正是利用这一机制,把动画信息放入 PNG 未定义的辅助块中。规范新增了三类数据块:动画控制块 acTL 声明该文件为动态 PNG,记录总帧数与循环次数;帧控制块 fcTL 记录单帧的尺寸、位置、延迟与合成方式;帧数据块 fdAT 承载除首帧外各帧的压缩图像数据[2]。其中 acTL 必须出现在第一个 IDAT 块之前,才能被识别为 APNG[4]。
fcTL 与 fdAT 块共用一套从 0 开始、逐块递增的序号,用于在块顺序被打乱时恢复帧的先后与播放节奏;缺少序号或序号乱序时,解码器会放弃动画数据,仅显示占位图像[4]。每一轮播放开始前,输出缓冲区会被初始化为全透明黑色,以保证各次播放结果一致[5]。
其向后兼容性来自 PNG 的块忽略规则:不认识 APNG 专有块的解码器会跳过这些块,只解出第一帧静态图像,从而实现同一文件在不同软件中的降级显示[2]。
发展历程
APNG 的规范由 Mozilla 公司的 Stuart Parmenter 与 Vladimir Vukićević 于 2004 年创建,最初目的是为界面中的活动指示器等元素提供动画存储方案[6]。同一时期,PNG 团队另有一种位图动画格式 MNG,因其解码库体积较大而未被 Mozilla 采用,APNG 凭借较小的实现体量与对旧 PNG 实现的兼容性成为替代方案[6]。
2007 年 3 月 23 日,Mozilla Firefox 3.0 的开发测试版本开始支持 APNG;同年 4 月 20 日,PNG 组织以 10 比 8 的投票结果否决将 APNG 纳入官方标准,主要理由是该格式并非独立格式,且 PNG 应保持为静态图像格式[7]。此后 APNG 虽未进入标准,却被 Safari、Chrome、Edge 等浏览器陆续支持,2016 年苹果把它选为 iOS 10 的 iMessage 应用动态贴纸的优先格式,2017 年 Chromium 也加入了 APNG 支持[7][8]。
2025 年 6 月 24 日,万维网联盟发布 PNG 第三版推荐标准,正式把 APNG 收入核心规范,其内容与 Mozilla 维护多年的 APNG 文档保持一致,使标准与长期部署的实现相互对齐[9][10]。
应用
APNG 适合不需要与音频或其他轨道同步的简单动画,例如加载指示器、进度动画以及网页用户界面中的动态元素[11]。在 iOS 上,它是苹果 iMessage 与信息应用创建动态贴纸时所支持的格式之一[11]。
在网页图像格式选择中,APNG 被视为无损动画序列的合适方案,相较动态 GIF 具有更好的画质表现;对应的浏览器支持包括 Chrome 59、Edge 12、Firefox 3、Opera 46 与 Safari 8 及之后版本[11]。数字广播领域也采用过 APNG:2008 年世界数字多媒体广播组织将其作为向后兼容的扩展,用于数字广播的 MOT 幻灯片应用,并被写入相关欧洲电信标准协会标准的规范性附录[8]。
局限
APNG 的动画数据藏在 PNG 辅助块中,格式本身没有提供让软件在接收后区分动态与静态 PNG 的机制,早期软件难以据此判断文件是否含有额外帧,也无法就 PNG 与 APNG 进行协商,这一直是标准讨论中的争议点[6]。多个 APNG 优化工具在改动位深、调色板或隔行方式时会破坏 fdAT 数据的有效性,因此这类工具对 APNG 的处理能力受限[12]。
兼容性方面,微软 Internet Explorer 不支持 APNG,早期基于 Blink 引擎的浏览器也需要借助插件才能播放动画[13]。此外 APNG 只支持无损压缩,在以真彩色保存内容时文件体积可能明显偏大,需要靠减少颜色数量等方式控制大小[14]。
在更广泛的格式比较中,AVIF 与 WebP 的压缩效率优于 APNG,但 APNG 的浏览器支持面更广;APNG 是用于替代简单动态 GIF 的方案,并不适合作为通用视频或复杂交互动画的解决手段[11]。
参见
参考资料
- Animated Portable Network Graphics [引用日期2026-10-14]
- fdd000649 [引用日期2026-10-14]
- W3C提案推荐标准:便携式网络图形(PNG)规范第三版 [引用日期2026-10-14]
- APNG Specification: Difference between revisions [引用日期2026-10-14]
- Decoders shall treat out- of- order APNG chunks as an error [引用日期2026-10-14]
- epfl.ch 上的网页 [引用日期2026-10-14]
- 时隔22年!PNG图片格式发布3.0规范:带来动图/HDR/Exif支持_服务软件_什么值得买 [引用日期2026-10-14]
- Animated+Portable+Network+Graphics [引用日期2026-10-14]
- Agenda items for Monday 23 June [引用日期2026-10-14]
- W3C推荐标准:便携式网络图形(PNG)规范第三版 [引用日期2026-10-14]
- 图像文件类型与格式指南 [引用日期2026-10-14]
- APNG not supported · Issue #79 · shssoichiro/oxipng [引用日期2026-10-14]
- APNG - Just Solve the File Format Problem [引用日期2026-10-14]
- APNG格式 [引用日期2026-10-14]