В попытке улучшить ответ Каруселла эта версия должна быть кросс-браузером, замораживает все изображения, включая те, у которых есть неправильный файл, заканчивающийся (например, страницы автоматической загрузки изображений) и не противоречит функции оригинала изображение, позволяющее оригиналу щелкнуть правой кнопкой мыши, как будто он перемещается.
Я бы заставил его обнаруживать анимацию, но это намного более интенсивное, чем просто замораживание.
function createElement(type, callback) {
var element = document.createElement(type);
callback(element);
return element;
}
function freezeGif(img) {
var width = img.width,
height = img.height,
canvas = createElement('canvas', function(clone) {
clone.width = width;
clone.height = height;
}),
attr,
i = 0;
var freeze = function() {
canvas.getContext('2d').drawImage(img, 0, 0, width, height);
for (i = 0; i < img.attributes.length; i++) {
attr = img.attributes[i];
if (attr.name !== '"') { // test for invalid attributes
canvas.setAttribute(attr.name, attr.value);
}
}
canvas.style.position = 'absolute';
img.parentNode.insertBefore(canvas, img);
img.style.opacity = 0;
};
if (img.complete) {
freeze();
} else {
img.addEventListener('load', freeze, true);
}
}
function freezeAllGifs() {
return new Array().slice.apply(document.images).map(freezeGif);
}
freezeAllGifs();
Если у вас есть на стороне сервера язык в вашем распоряжении, я думаю, вам лучше использовать на стороне сервера код, чтобы сделать первый кадр, сохраните его на своем сервере и показать его вместо .. –
Проблема заключается в том, что существует 15 до 60 изображения из твиттера для изменения. См. Http://jetwick.com (с открытым исходным кодом). – Karussell
Да, но вы меняете его только один раз, поэтому это не должно быть проблемой. –