【问题标题】:How can I detect whether an image is a PNG or APNG format? [duplicate]如何检测图像是 PNG 还是 APNG 格式? [复制]
【发布时间】:2011-06-09 23:49:05
【问题描述】:

可能重复:
Can I programatically determine if a PNG is animated?

APNG 向后兼容 PNG。我在十六进制编辑器中打开了一个 apng 和 png 文件,前几个字节看起来相同。因此,如果用户上传了这些格式中的任何一种,我如何检测该格式到底是什么?我在一些阻止 apng 的网站上看到过这种做法。

我猜 ImageMagick 库让这很容易,但如果我在不使用图像处理库的情况下进行检测(用于学习目的)呢?我可以查找告诉我文件是否为 apng 的特定字节吗?

欢迎使用任何语言的解决方案。

【问题讨论】:

标签: php python ruby perl apng


【解决方案1】:

您可以使用已经安装在大多数 Unix 平台上的 libmagic。

【讨论】:

    【解决方案2】:

    查看Can I programatically determine if a PNG is animated?的解决方案:可以搜索字符串“acTL”。

    【讨论】:

      【解决方案3】:

      来自http://en.wikipedia.org/wiki/Apng

      在 PNG 和 MNG 格式的用户和维护者中,APNG 不是 深受好评。特别是,PNG 被认为是一个单一的图像 格式[2]。 APNG 将后续帧隐藏在 PNG 辅助块中 以这样一种方式,不知道 APNG 的应用程序会忽略它们,但是 否则格式没有变化,以允许软件 区分动画和非动画图像。 [斜体我的]

      [2]"PNG (Portable Network Graphics) Specification, Version 1.1#8.4. Multiple-image extension"

      【讨论】:

        【解决方案4】:

        APNG 和 PNG 文件的前几个字节的控制可以很容易地绕过。所以这种方法并不安全。用户可以更改文件的十六进制代码并传递您的此控件。

        【讨论】:

          猜你喜欢
          • 2018-04-16
          • 2011-11-05
          • 2016-01-03
          • 2017-07-13
          • 2015-06-13
          • 2011-04-15
          • 2014-02-06
          • 2015-08-28
          • 2012-12-26
          相关资源
          最近更新 更多