可能重复:
我能否以编程方式确定 PNG 是否为动画?
APNG 向后兼容 PNG。我在十六进制编辑器中打开了一个 apng 和 png 文件,前几个字节看起来相同。因此,如果用户上传了这些格式中的任何一种,我如何检测该格式到底是什么?我已经在一些阻止 apng 的网站上看到了这一点。
我猜 ImageMagick 库让这很容易,但是如果我在不使用图像处理库(用于学习目的)的情况下进行检测呢?我可以查找告诉我文件是否为 apng 的特定字节吗?
欢迎使用任何语言的解决方案。
请参阅我可以以编程方式确定 PNG 是否为动画的解决方案吗?:您可以搜索字符串“acTL”。
来自http://en.wikipedia.org/wiki/Apng:
在 PNG 和 MNG 格式的用户和维护者中,APNG 并不受欢迎。特别是,PNG 被认为是一种单图像格式[2]。APNG 以这样一种方式隐藏 PNG 辅助块中的后续帧,使得不知道 APNG 的应用程序会忽略它们,但在其他方面没有更改格式以允许软件区分动画和非动画图像。[斜体我的]
您可以使用已经安装在大多数 Unix 平台上的 libmagic。
可以轻松绕过 APNG 和 PNG 文件的前几个字节的控制。所以这种方法并不安全。用户可以更改文件的十六进制代码并传递您的此控件。