Я пытаюсь сделать GIF из нескольких файлов изображений, следуя этой теме .
Ответ Криса отлично работает, когда я открываю физический файл из каталога, используя Image.open()
, а затем добавьте список, чтобы сделать GIF.
imgs = [Image.open(f) for f in os.listdir(os.getcwd())]
imgs[0].save('{}.gif'.format(img_filename),
format='GIF',
append_images=imgs[1:],
save_all=True,
duration=args.duration,
loop=0)
Это прекрасно работает, и выходной GIF является фактически анимированным. Я заметил, что список glitched_imgs
состоит из PIL.PngImagePlugin.PngImageFile
объектов в этом случае.
Однако всякий раз, когда я пытаюсь использовать объект Image
, возвращаемый функцией, созданный GIF-файл полностью сохраняется c.
imgs = [get_randomized_image() for _ in range(args.frames)]
imgs[0].save('{}.gif'.format(img_filename),
format='GIF',
append_images=imgs[1:],
save_all=True,
duration=args.duration,
loop=0)
Где get_randomized_image()
возвращает случайный Image
объект, в частности, из массива numpy
.
# Inside `get_glitched_image()`
return Image.fromarray(outputarr, img_mode)
Я хочу напрямую создать GIF со списком объектов Вернувшись из этой функции, как мне этого добиться?
Примечание. Файлы, которые я открываю в первом (рабочем) методе, - это файлы, которые я сохранил до использования get_randomized_images()
, поэтому я могу заверить вас, что это именно то же самое.