from matrix import get_size, pmx import imageio import matplotlib.pyplot as plt import numpy as np class Animate: def __init__(self, mx, day="CHANGEME"): self.mx = mx self.day = day _size = get_size(mx) self.height = _size[0] self.width = _size[1] self.f_count = -1 def add_frame(self, frame): self.f_count += 1 self.write_frame(frame) def write_frame(self, frame): current = np.zeros_like(self.mx) for y, row in enumerate(frame): for x, col in enumerate(row): current[y][x] = frame[y][x] fig, ax = plt.subplots() ax.imshow(current, cmap=plt.cm.gray) ax.axis("off") _figpath = f"gif-{self.day}/{self.f_count:05}.png" plt.savefig(_figpath) plt.close() def animate(self, frameskip=1): with imageio.get_writer( f"gif-{self.day}/day{self.day}.gif", mode="I" ) as writer: names = [ f"gif-{self.day}/{x:05}.png" for x in range(0, self.f_count, frameskip) ] print(names) for filename in names: try: image = imageio.imread(filename) writer.append_data(image) except FileNotFoundError: pass