From 260d009ff0bdf095a697c3b6af44c14ad9393def Mon Sep 17 00:00:00 2001 From: Devin Neal Date: Thu, 21 May 2020 03:47:06 -0700 Subject: [PATCH] Restore --save_pngs functionality --- manimlib/scene/scene_file_writer.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/manimlib/scene/scene_file_writer.py b/manimlib/scene/scene_file_writer.py index 298339748c..f0dfbe63db 100644 --- a/manimlib/scene/scene_file_writer.py +++ b/manimlib/scene/scene_file_writer.py @@ -6,6 +6,7 @@ import _thread as thread from time import sleep import datetime +from PIL import Image import manimlib.constants as consts from manimlib.constants import FFMPEG_BIN @@ -37,7 +38,6 @@ class SceneFileWriter(object): """ CONFIG = { "write_to_movie": False, - # TODO, save_pngs is doing nothing "save_pngs": False, "png_mode": "RGBA", "save_last_frame": False, @@ -56,6 +56,7 @@ def __init__(self, scene, **kwargs): self.stream_lock = False self.init_output_directories() self.init_audio() + self.frame_count = 0 # Output directories and files def init_output_directories(self): @@ -66,7 +67,7 @@ def init_output_directories(self): """ module_directory = self.output_directory or self.get_default_module_directory() scene_name = self.file_name or self.get_default_scene_name() - if self.save_last_frame: + if self.save_last_frame or self.save_pngs: if consts.VIDEO_DIR != "": image_dir = guarantee_existence(os.path.join( consts.VIDEO_DIR, @@ -334,6 +335,10 @@ def write_frame(self, frame): """ if self.write_to_movie: self.writing_process.stdin.write(frame.tostring()) + if self.save_pngs: + path, extension = os.path.splitext(self.image_file_path) + Image.fromarray(frame).save(f'{path}{self.frame_count}{extension}') + self.frame_count += 1 def save_final_image(self, image): """