Spaces:
Runtime error
Runtime error
import os | |
import imageio | |
import numpy as np | |
from glob import glob | |
from tqdm import tqdm | |
from PIL import Image | |
if __name__ == "__main__": | |
path = "/Users/bkhmsi/Desktop/Animal-Words/*.gif" | |
save_path = os.path.join(os.path.dirname(path), "collage_loop_25_3.gif") | |
width, height = 250, 250 | |
# width, height = 100, 100 | |
nx, ny = 5, 5 | |
n_frames = 67 | |
collage = np.ones((n_frames*2, width*nx, height*ny)).astype(np.uint8)*255 | |
filenames = [p for p in glob(path) if os.path.basename(p)[:-4] not in ["palestine", "amin", "collage", "collage_loop_25", "collage_loop_25_2", "collage_loop_25_3a", "collage_loop_7", "collage_1d"]] | |
print(f"> {len(filenames)} Files Found") | |
f_filenames = filenames | |
filter = ["horse.gif", "giraffe.gif", "duck.gif", "turtle.gif", "camel.gif", "octopus.gif", "shark.gif"] | |
# f_filenames = [] | |
# for file in filenames: | |
# basename = os.path.basename(file) | |
# if basename in filter: | |
# f_filenames += [file] | |
assert nx*ny <= len(f_filenames) | |
for i in range(nx): | |
for j in tqdm(range(ny)): | |
image = Image.open(f_filenames[i*ny+j]) | |
assert image.is_animated | |
idx = 0 | |
for frame_idx in range(n_frames): | |
image.seek(frame_idx) | |
frame = image.convert('L').copy() | |
frame = frame.resize((300,300)) | |
collage[idx, i*width:(i+1)*width,j*height:(j+1)*height] = np.asarray(frame)[25:275, 25:275] | |
idx += 1 | |
for frame_idx in reversed(range(n_frames)): | |
image.seek(frame_idx) | |
frame = image.convert('L').copy() | |
frame = frame.resize((300,300)) | |
collage[idx, i*width:(i+1)*width,j*height:(j+1)*height] = np.asarray(frame)[25:275, 25:275] | |
idx += 1 | |
imageio.mimsave(save_path, collage) | |