In einem Versuch, Karussells Antwort zu verbessern, sollte diese Version Browser-übergreifend sein, alle Bilder einfrieren, einschließlich derjenigen, die eine falsche Dateiendung haben (z. B. automatische Bildlade-Seiten) und nicht mit der Funktion des Originals kollidieren Bild, so dass das Original mit der rechten Maustaste angeklickt werden kann, als würde es sich bewegen.
Ich würde es machen, um Animation zu erkennen, aber das ist viel intensiver, als nur sie zu frieren.
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();
Wenn Sie serverseitige Sprache zur Verfügung zu haben glaube ich Ihnen die Arbeit mit Server-seitigen Code den ersten Frame zu nehmen, speichern Sie es auf Ihrem Server und zeigen Sie es stattdessen .. –
Das Problem ist, dass es 15 bis 60 ist Bilder von Twitter zu ändern. Siehe http://jetwick.com (Open Source). – Karussell
Ja, aber Sie ändern es nur einmal, so sollte es kein Problem sein. –