En un intento de mejorar la respuesta de Karussell, esta versión debe ser de navegador cruzado, congela todas las imágenes, incluidas las que tienen una finalización incorrecta (por ejemplo, páginas de carga de imágenes automáticas) y no entra en conflicto con la función del original imagen, lo que permite que el original se haga clic derecho como si se estuviera moviendo.
Lo haría detectar la animación, pero eso es mucho más intenso que simplemente congelarlos independientemente.
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();
Si tiene lenguaje del lado del servidor a su disposición Creo que es mejor código del lado del servidor de uso para tener el primer cuadro, lo almacena en el servidor y mostrar en su lugar .. –
El problema es que hay de 15 a 60 imágenes de twitter para cambiar. Ver http://jetwick.com (código abierto). – Karussell
Sí, pero solo lo cambia una vez, así que no debería ser un problema. –