我正在使用nodejs / expressjs构建一个小应用程序。我为GIF和JPG图像制作了一个上传向导......取决于图像'我会将它们分类为动画图像或普通图像...
GIF --> Animated Images
JPG --> Normal Images
但是我遇到了问题,JPG中的图像可以动画。那么如何检测动画JPG图像呢? 演示动画JPG:http://picforest.net/pic/0237bbca82954e74902a4afba66df221
答案 0 :(得分:0)
我认为您可以使用EXIF信息找到该信息。
例如,这里是您提供的图片的EXIF信息: http://regex.info/exif.cgi?imgurl=http%3A%2F%2Fcdn.picforest.net%2Fupload%2F2015%2F17%2F0237bbca82954e74902a4afba66df221.jpg
它说这是一张GIF图片。
有一个名为https://github.com/gomfunkel/node-exif的exif节点模块。也许这可能会帮助你
答案 1 :(得分:0)
正如评论中指出的那样,没有动画JPEG(this obscure proposal除外)。不幸的是,这并不意味着您可以依赖图像扩展。扩展只是文件名的一部分,它建议文件类型,但不确定它。例如,您共享的图片具有.jpg
扩展名,但实际上它是GIF,并且每个主要浏览器都会将其视为一个。要检测动画图像,您必须检查其内容。例如,对于GIF图像,您可以检查文件的前6个字节是GIF89a
还是GIF87a
,但这样做只会知道图像是GIF,而不是图像是动画 GIF。如果你只想检测动画GIF,你必须检查它们是否有多个图像描述符块,而且它有点复杂。
值得一提的是,目前浏览器图像格式支持3种可能包含动画的内容:
如果你想检测前两种类型的动画你可以使用我的node.js库 - is-animated,它使用起来相当简单:
const isAnimated = require('is-animated');
isAnimated(someBuffer); // -> true/false
不幸的是,目前它不支持检测动画SVG。