如何检测图像是 PNG 还是 APNG 格式?
可能的重复:
我可以通过编程方式确定 PNG 是否为动画吗?
APNG 向后兼容 PNG。我在十六进制编辑器中打开 apng 和 png 文件,前几个字节看起来相同。因此,如果用户上传这两种格式中的任何一种,我如何检测该格式的真正含义是什么?我在一些阻止 apng 的网站上看到过这种做法。
我猜 ImageMagick 库使这变得容易,但是如果我要在不使用图像处理库(出于学习目的)的情况下进行检测怎么办?我可以查找特定字节来告诉我该文件是否为 apng 吗?
欢迎任何语言的解决方案。
Possible Duplicate:
Can I programatically determine if a PNG is animated?
APNG is backwards compatible with PNG. I opened up an apng and png file in a hex editor and the first few bytes look identical. So if a user uploads either of these formats, how do I detect what the format really is? I've seen this done on some sites that block apng.
I'm guessing the ImageMagick library makes this easy, but what if I were to do the detect without the use of an image processing library (for learning purposes)? Can I look for specific bytes that tell me if the file is apng?
Solutions in any language is welcome.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
来自 http://en.wikipedia.org/wiki/Apng:
From http://en.wikipedia.org/wiki/Apng:
请参阅我可以通过编程方式确定是否PNG 是动画的?:您可以搜索字符串“acTL”。
See the solution of Can I programatically determine if a PNG is animated?: you could search for the string "acTL".
APNG 和 PNG 文件的前几个字节的控制可以轻松绕过。所以这个方法并不安全。用户可以更改文件的十六进制代码并传递您的此控制权。
APNG and PNG files' first few bytes' control can be bypass, easily . So this method isn't secure. User can change file's hex code and pass your this control.
您可以使用大多数 Unix 平台上已安装的 libmagic。
You can use libmagic which is already installed on most Unix platforms.