2016-12-19 11 views
6

Я пробовал прочитать много примеров онлайн и нашел imageio - идеальный пакет для него. Also found examples written in here.Создание gif из изображений с использованием imageio в python

я только следовал примеру, как показано и попробовал следующую

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

и другой пример.

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

оба эти не работают. И в основном я вижу только первый кадр из gif и мигать и заканчивать. Продолжительность устанавливается 0,5 с, поэтому она должна работать нормально. Возможно, я что-то упустил.

+1

Оба подхода к работе над Python 2.7.1 и ['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)), используя несколько изображений .png. Вы уверены, что все изображения, которые вы хотите использовать, выбираются? Проверьте список 'file_names', чтобы увидеть, все ли они там. – berna1111

+0

Я пробовал первый подход. он работает примерно для 758 файлов .png. Но у меня около 3000 файлов .png, а файлы после 758 не добавлены в файл .gif. Есть ли причина для этого? Я знаю, что в массиве file_names есть эти файлы. Чтобы узнать больше о моем вопросе, обратитесь к https://stackoverflow.com/questions/44650649/why-is-my-gif-missing-png-files-after-250-iterations. Благодаря!! – user77005

+0

Отъезд https://www.quora.com/How-long-can-a-GIF-animate –

ответ

2

Это работает для меня:

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)