PHP Developers Network

Access specific frame within animated GIF
Page 1 of 1

Author:  oliiix [ Tue Jul 19, 2011 4:41 am ]
Post subject:  Access specific frame within animated GIF

Dear All,

Couldn't find anything about this topic.
I have an animated GIF that contains a tree picture which changes color over time. What I'd like to accomplish is that if a website visitor clicks on a link and the page is being reloaded, the GIF Tree doesn't start again from the beginning. No, the Tree should have the color which it had when the user clicked on the link. So I'd like to store the frame number of the GIF when the user clicks a link and starts the GIF animation on the reloaded page with that frame number. Is that possible at all? The only image library for PHP I have is GD. THink there's no ImageMagick on this server.

Thanks for your help on this!
Best regards,

Author:  McInfo [ Tue Jul 19, 2011 10:23 pm ]
Post subject:  Re: Access specific frame within animated GIF

There is no way to "bookmark" a GIF, so making the animation start at a specific frame involves reordering the frames. That could result in graphical anomalies because a frame may rely on the cumulative changes made to the so-called "logical screen" by all the frames before it. Also, changes to the image file would be seen by all users. And it would be unnecessarily resource-intensive to modify an image so frequently.

Depending on the number of frames, it might be practical to create a cache of separate GIFs (using a graphics program) that start at different frames.

You still have the problem of knowing what frame the animation is on. That could be solved by maintaining a counter in JavaScript with a timeout or interval that begins when the image is loaded. Image objects have an onload method that is called when the image has finished loading. The timeout or interval would need to be synchronized with the frame delay. I wouldn't expect that to be totally reliable.

An alternative might be to represent each frame with a separate file (not necessarily GIF) and use JavaScript to animate them. The frame counter would be more reliable this way. The images would need to be pre-loaded.

Network delays should be a consideration.

Are you able to share the image? Seeing it might help us better understand the situation and inspire some creative solutions.

Page 1 of 1 All times are UTC - 5 hours
Powered by phpBB® Forum Software © phpBB Group