Restart a gif animation without reloading the file

27,306

Solution 1

I've had similar requirement.

var img = document.createElement("img"),
    imageUrl = "http://i73.photobucket.com/albums/i231/charma13/love240.gif";
img.src = imageUrl;
document.body.appendChild(img);

window.restartAnim = function () {
    img.src = "";
    img.src = imageUrl;
}

Solution 2

for example on facebook - animated emoticons are not .gifs but a set of static frames on png file with dynamically set background offset. This way you have full control over your animation from javascript - you can even pause/unpause it or change its speed.

It's possible to split your .gif file into separate frames and generate a .png file on server side dynamically.

This looks like a good weekend project for me ;)

Solution 3

restartGif(imgElement){ 
  let element = document.getElementById(imgElement);
  if (element) {
     var imgSrc = element.src;
     element.src = imgSrc; 
  }
}

// Example:

restartGif("gif_box")
Share:
27,306
Erfan Ebrahimnia
Author by

Erfan Ebrahimnia

Updated on July 05, 2022

Comments

  • Erfan Ebrahimnia
    Erfan Ebrahimnia almost 2 years

    Is it possible to restart a gif animation without downloading the file every time? My current code looks like this:

    var img = new Image();
    img.src = 'imgages/src/myImage.gif';
    
    $('#id').css('background-image', 'url("' + img.src + '?x=' + Date.now() + '")' );
    

    Edit

    When I insert the gif into the dom it didn't restart the gif animation. I can only achieve this by appending a random string to the image src but this will download the image again.

    I want to know if it is possible to restart the gif animation without downloading the gif.