मैंने कुछ जेएस लिखा है जो एनिमेटेड gifs का पता लगाता है। IE 9 को छोड़कर अधिकांश आधुनिक ब्राउज़रों में काम करता है।
अस्वीकरण: यह केवल तभी काम करता है जब छवि की मूल उत्पत्ति उस पृष्ठ के समान होती है जिस पर आप स्क्रिप्ट लोड कर रहे हैं।
कोड के नवीनतम संस्करण के लिए सार देखें: https://gist.github.com/3012623
function isAnimatedGif(src, cb) {
var request = new XMLHttpRequest();
request.open('GET', src, true);
request.responseType = 'arraybuffer';
request.addEventListener('load', function() {
var arr = new Uint8Array(request.response),
i, len, length = arr.length, frames = 0;
// make sure it's a gif (GIF8)
if (arr[0] !== 0x47 || arr[1] !== 0x49 ||
arr[2] !== 0x46 || arr[3] !== 0x38)
{
cb(false);
return;
}
//ported from php http://www.php.net/manual/en/function.imagecreatefromgif.php#104473
//an animated gif contains multiple "frames", with each frame having a
//header made up of:
// * a static 4-byte sequence (\x00\x21\xF9\x04)
// * 4 variable bytes
// * a static 2-byte sequence (\x00\x2C) (some variants may use \x00\x21 ?)
// We read through the file til we reach the end of the file, or we've found
// at least 2 frame headers
for (i=0, len = length - 9; i < len, frames < 2; ++i) {
if (arr[i] === 0x00 && arr[i+1] === 0x21 &&
arr[i+2] === 0xF9 && arr[i+3] === 0x04 &&
arr[i+8] === 0x00 &&
(arr[i+9] === 0x2C || arr[i+9] === 0x21))
{
frames++;
}
}
// if frame count > 1, it's animated
cb(frames > 1);
});
request.send();
}
मैं अवशेष से सहमत हैं, मैं वहाँ में जावास्क्रिप्ट – Josh
मैंने सोचा था कि यह करने के लिए किसी भी तरह से है नहीं लगता है, हो सकता है कुछ के साथ संभव है कैनवास-एपीआई। बस प्रत्येक एक्स मिलीसेकंड छवि को नमूना दें, और छवि के हैश की गणना करें। बहुत विश्वसनीय नहीं है, लेकिन यह काम कर सकता है ... – doekman