APNG num_plays 在 Firefox 中有效,但在 Chrome 中无效
APNG num_plays works in Firefox but not in Chrome
供参考的APNG文件规格:https://wiki.mozilla.org/APNG_Specification
num_plays 定义动画 PNG 应循环的次数。 0 是一个特殊值,表示动画将无限循环。
我在网上找到了一些我想在网页上显示的APNG。它们都将 num_plays 设置为 0。(在这个特定示例中,神奇宝贝游戏中的 Ivysaur 动画图像:https://cdn.bulbagarden.net/upload/c/c8/Spr_3e_002.png)
我在 Chrome 中显示这个原始 APNG 没问题,动画无限循环。
但对我来说重要的是动画只播放一次,然后播放最后一帧。我尝试了一些 HTML- 和 JS-based 解决方案,例如等待几秒钟,然后用我绘制的 canvas 替换 APNG img 元素,但我没有能够得到我想要的结果。图像会在动画结束时重置为第一帧而不是最后一帧,或者有时图像内容的像素偏移莫名其妙地不同。
那时我发现我可以更改 APNG 的 acTL 部分中的 num_plays 值,以将它的循环次数更改为 1 - 所以我做到了。
它在 Firefox 中完美运行!这是一个准确显示我想要的行为的示例:
但在 Chrome 中,APNG 在更改 num_plays 后根本不再具有动画效果。
什么可能导致它在 Chrome 中没有动画?不支持非零 num_plays 吗?我必须采用哪些替代方法才能获得与 Firefox 中相同的行为?
问题是我使用十六进制编辑器修改了从互联网上下载的 APNG,该 APNG 最初的 num_plays 为 0。当我这样做时,我忽略了更新 acTL 部分的 CRC; Firefox 按照我的预期播放了格式错误的 APNG,但是 Chrome 中止了,因为我的 APNG 没有正确的 CRC,不符合规范。
供参考的APNG文件规格:https://wiki.mozilla.org/APNG_Specification
num_plays 定义动画 PNG 应循环的次数。 0 是一个特殊值,表示动画将无限循环。
我在网上找到了一些我想在网页上显示的APNG。它们都将 num_plays 设置为 0。(在这个特定示例中,神奇宝贝游戏中的 Ivysaur 动画图像:https://cdn.bulbagarden.net/upload/c/c8/Spr_3e_002.png)
我在 Chrome 中显示这个原始 APNG 没问题,动画无限循环。
但对我来说重要的是动画只播放一次,然后播放最后一帧。我尝试了一些 HTML- 和 JS-based 解决方案,例如等待几秒钟,然后用我绘制的 canvas 替换 APNG img 元素,但我没有能够得到我想要的结果。图像会在动画结束时重置为第一帧而不是最后一帧,或者有时图像内容的像素偏移莫名其妙地不同。
那时我发现我可以更改 APNG 的 acTL 部分中的 num_plays 值,以将它的循环次数更改为 1 - 所以我做到了。
它在 Firefox 中完美运行!这是一个准确显示我想要的行为的示例:
但在 Chrome 中,APNG 在更改 num_plays 后根本不再具有动画效果。
什么可能导致它在 Chrome 中没有动画?不支持非零 num_plays 吗?我必须采用哪些替代方法才能获得与 Firefox 中相同的行为?
问题是我使用十六进制编辑器修改了从互联网上下载的 APNG,该 APNG 最初的 num_plays 为 0。当我这样做时,我忽略了更新 acTL 部分的 CRC; Firefox 按照我的预期播放了格式错误的 APNG,但是 Chrome 中止了,因为我的 APNG 没有正确的 CRC,不符合规范。