Reputation: 2543
I have tried reading a lot of examples online and found imageio
is the perfect package for it. Also found examples written in here.
I have just followed the example as shown and tried the following
import imageio as io
import os
file_names = sorted((fn for fn in os.listdir('.') if fn.startswith('surface')))
#making animation
with io.get_writer('surface.gif', mode='I', duration=0.5) as writer:
for filename in file_names:
image = io.imread(filename)
writer.append_data(image)
writer.close()
and another example.
images = []
for filename in file_names:
images.append(io.imread(filename))
io.mimsave('surface1.gif', images, duration = 0.5)
both of these do not work. And basically i only see the first frame from the gif and a blink and finish. The duration is set 0.5secs, so it should work fine. I might have been missing out something here.
Upvotes: 40
Views: 64371
Reputation: 1080
This works for me:
import os
import imageio
png_dir = '../animation/png'
images = []
for file_name in sorted(os.listdir(png_dir)):
if file_name.endswith('.png'):
file_path = os.path.join(png_dir, file_name)
images.append(imageio.imread(file_path))
# Make it pause at the end so that the viewers can ponder
for _ in range(10):
images.append(imageio.imread(file_path))
imageio.mimsave('../animation/gif/movie.gif', images)
Upvotes: 45
Reputation: 1540
in case anyone needs it,
for python 3.6.8, it needed fps
imageio.mimsave('/path/file.gif',images,fps=55)
Upvotes: 31