【问题标题】:Is it possible to get consistent apng support in modern browsers?是否有可能在现代浏览器中获得一致的 apng 支持?
【发布时间】:2020-06-04 18:40:53
【问题描述】:

我继承了一个遗留项目,其中包含大约 20 多个 apng 文件,这些文件被认为对网站的设计很有帮助。但是,无论出于何种原因,safari 播放这些 apng 文件两次,而我测试过的所有其他浏览器只播放一次,因为它们是在循环计数 (num_plays) 设置为 1 的情况下创建的。这是标准的,因为 0 意味着永远循环.

我知道此时 apng 可能已被视为过去,但假设我无法更改项目的这一部分,我是否有任何方法让 safari 按照设计只播放一次动画?还是我只是在看一些腐臭的野生动物园?

以下是其中一张图片的示例:

谢谢!

【问题讨论】:

    标签: animation safari apng


    【解决方案1】:

    如果所有图像都包含与示例一样少的颜色,您可以将它们转换为动画 GIF,而不会降低质量,以避免仅 Safari 的回退(实际上,在没有转换的情况下您正在查看)。

    【讨论】:

    • 这将属于“腐烂的 safari 唯一后备”类别 - 顺便说一句,这就是我正在做的事情,但由于 gif 的锯齿状性质并且没有 alpha 支持,它非常​​可怕。我写了一个动画库,它可以完成这项工作,但它没有回答我的问题,所以我不会在这里发布。不过还是谢谢。
    • 我应该提到,这些 apng 具有透明背景的堆栈溢出并不明显。红色波浪是图像的唯一部分,在 gif 格式中严重失真。
    • 我的意思是“在所有浏览器中使用动画 GIF。”,在所有浏览器中都属于“腐臭”的范畴。
    • 您的动画库是否将 APNG 转换为 PNG[],其元素通过 canvas.drawImage() 顺序显示?
    • 不,我将它们分成帧并使用 requestanimationframe 在图像上运行 src 交换。它有效,但还没有完全实现。
    【解决方案2】:

    您应该修改最后一帧的frame control chunk,将delay_num 设置为65535,将delay_den 设置为1,这样第一帧就不会在65535 s = 18.2 h 内再次显示!

    【讨论】:

    • 哈哈。如果可行,这是一个合理的解决方法。我可以试一试并报告
    猜你喜欢
    • 1970-01-01
    • 2016-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-18
    • 1970-01-01
    • 2011-08-01
    • 2012-05-22
    相关资源
    最近更新 更多