2016-12-19 2 views
6

J'ai essayé de lire beaucoup d'exemples en ligne et trouvé imageio est le paquet parfait pour cela. Also found examples written in here.Faire un gif à partir d'images en utilisant imageio en python

Je viens de suivre l'exemple comme indiqué et essayé les suivantes

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() 

et un autre exemple.

images = [] 
for filename in file_names: 
    images.append(io.imread(filename)) 
io.mimsave('surface1.gif', images, duration = 0.5) 

ces deux méthodes ne fonctionnent pas. Et fondamentalement, je ne vois que la première image du gif et un clignotement et une finition. La durée est fixée à 0.5secs, donc cela devrait fonctionner correctement. J'ai peut-être manqué quelque chose ici.

+1

Les deux approches de travail sur Python 2.7.1 et ['imageio' 2.1.2] (https://anaconda.org/conda-forge/imageio) ([1 ] (https://drive.google.com/open?id=0By7vRQt-oAVdZXhtbU1yNUlQN0E) [2] (https://drive.google.com/open?id=0By7vRQt-oAVdaUhhbmxVRnotT1U)), en utilisant plusieurs images .png. Etes-vous sûr que toutes les images que vous souhaitez utiliser sont sélectionnées? Vérifiez la liste 'file_names' pour voir s'ils sont tous là. – berna1111

+0

J'ai essayé la première approche. cela fonctionne pour environ 758 fichiers .png. Mais j'ai environ 3000 fichiers .png et les fichiers après 758 ne sont pas ajoutés dans le fichier .gif. Y a-t-il une raison à cela? Je sais que le tableau file_names a ces fichiers. Référez-vous à https://stackoverflow.com/questions/44650649/why-is-my-gif-missing-png-files-after-250-iterrations pour en savoir plus sur ma question. Merci!! – user77005

+0

Consultez https://www.quora.com/How-long-can-a-GIF-animate –

Répondre

2

Cela fonctionne pour moi:

import os 
import imageio 

png_dir = "./saves/png/" 
images = [] 
for subdir, dirs, files in os.walk(png_dir): 
    for file in files: 
     file_path = os.path.join(subdir, file) 
     if file_path.endswith(".png"): 
      images.append(imageio.imread(file_path)) 
imageio.mimsave('./saves/gif/movie.gif', images)